1. 概要

Linuxではlsコマンドを使用して、ファイルとフォルダーを一覧表示します。 詳細を表示するオプションを追加できます。 また、最後に変更された時刻にファイルを並べ替えることもできます。

一般的な使用例は、たとえば、最後に変更された5つのファイルが必要な場合です。 残念ながら、lsだけでは出力を制限できません。 このチュートリアルでは、lsheadおよびtailと一緒に使用してこれを実現します。

この記事の例はすべてbashでテストされていますが、他のシェルでも機能するはずです。

2. 最終変更ファイルの一覧表示

file-1.txt file-2.txtからfile-10.txtまでの10個のファイルを含むディレクトリがあるとします。 それらは同じ順序で作成されています。 ls -t、を使用して、最後に変更された時刻ごとにそれらを一覧表示できます。

$ ls -t1
file-10.txt
file-9.txt
file-8.txt
file-7.txt
file-6.txt
file-5.txt
file-4.txt
file-3.txt
file-2.txt
file-1.txt

予想どおり、これにより、ファイルを作成したときとは逆の順序でファイルが印刷されます。 lsの引数として1も追加したことに注意してください。各ファイルは、それぞれの行で取得されます。

3. ヘッドを使用する

ここで、結果を最後に変更された5つのファイルのみに制限するために、lsの出力をheadにパイプします。

$ ls -t1 | head -5
file-10.txt
file-9.txt
file-8.txt
file-7.txt
file-6.txt

4. テールを使用する

最近変更されたファイルを知りたい場合は、tailを使用して最後の5つの結果を取得します。

$ ls -t1 | tail -5
file-5.txt
file-4.txt
file-3.txt
file-2.txt
file-1.txt

5. 逆順

テールを使用して最後の5つの結果を取得しても、希望する結果が得られない場合があります。 おそらく最も古いファイルを最初にリストしたいと思うでしょう。 rlsの引数に追加して、逆の順序を適用してみましょう。

$ ls -tr1 | tail -5
file-6.txt
file-7.txt
file-8.txt
file-9.txt
file-10.txt

これにより、最後に変更されたファイルが作成と逆の順序で印刷されます。 ls の順序付けは、出力がtailを介してパイプされる前に行われます。 希望する結果を得るには、この最後のコマンドをheadに置き換える必要があります。

$ ls -tr1 | head -5
file-1.txt
file-2.txt
file-3.txt
file-4.txt
file-5.txt

6. 結論

この記事では、lsコマンドをheadと組み合わせて、ディレクトリ内の最後に変更された5つのファイルを表示する方法を学びました。 また、反対の場合は、lstailと一緒に使用できることも学びました。

lsの出力を逆に並べ替えることにより、結果を好みに合わせてさらに調整できます。