Linuxでファイルやディレクトリをリストするためにlsコマンドを使用する方法

  • lsコマンドは、ファイルやディレクトリをリストするために使用できる強力なツールです。
  • lsには、機能を強化し、使いやすくするための多くのオプションやパラメータがあります。
  • フォルダ内のすべてを表示したい場合は、ls -laが適しています。

私たちは、Linuxのlsコマンドを考えずに毎日使用しています。それは残念です。少し注意を払うと、コマンドラインの武器庫に追加すべきものも含め、多くの便利なオプションが見つかるでしょう。

lsはファイルやディレクトリをリストします

lsコマンドはおそらく、ほとんどのLinuxユーザーが最初に遭遇するコマンドです。コマンドラインに常駐している私たちは、考えずに毎日使用しています。それが、ほとんどのユーザーが気づいていないほど、このコマンドに多くの機能がある理由を説明しているかもしれません。ディレクトリ内の内容を確認するために、ファイルはこのコマンドでリストします。ファイルの権限を確認したいときは、長いフォーマットでファイルのリストを作成します。それ以外は、ほとんど考慮されません。

lsコマンドは、多くのオプションを持つコマンドの1つです。おそらく、これが問題の一部です。非常に多くのオプションがあるため、その中から有益なものをどのように見つけ出すのでしょうか?そして、見つけた後、どのようにして覚えるのでしょうか?

オプションやパラメータの文字列を持つlsコマンドの便利な組み合わせは、エイリアスの完璧な候補です。実際、ほとんどのディストリビューションでは、「裸の」lsコマンドと考えるものは、実際にはエイリアスです。typeコマンドは、エイリアスの基本的な定義を表示するために使用できるものの1つです。lsの定義を見てみましょう: type ls

lsコマンドを使用するたびに、--color=autoパラメータが自動的に含まれます。これにより、リスト内のさまざまなファイルの種類に異なる色が提供されます。

シンプルなlsリスト

Linuxのターミナルをしばらく使用したことがある人は誰でも、デフォルトではlsが現在のディレクトリ内のファイルやディレクトリをリストすることを知っています。

ls

リストを1つの列で作成したい場合は、-1(1行に1つのファイル)オプションを使用します:

ls -1

リストの最上部にある奇妙に見えるファイル名は、後で説明します。

さまざまなディレクトリでlsを使用する

lsで現在のディレクトリ以外のディレクトリ内のファイルをリストするには、コマンドラインでlsにディレクトリへのパスを渡します。lsに複数のディレクトリを渡して、それらを1つずつリストすることもできます。ここでは、lsに「Help」と「gc_help」という2つのディレクトリ内のファイルをリストするように求めています。

ls Help gc_help

lsが最初のディレクトリの内容をリストすると、2番目のディレクトリの内容をリストします。処理するディレクトリごとに、ディレクトリの名前が印刷されます:

ファイルパターンの使用

一連のファイルを個別にリストするには、パターンマッチングを使用します。疑問符「?」は任意の1文字を表し、アスタリスク「*」は任意の文字列を表します。「ip_」で始まる名前を持つファイルやディレクトリをリストするには、このフォーマットを使用します:

ls ip_*

「.c」拡張子を持つファイルをリストするには、このフォーマットを使用します:

ls *.c

lsgrepを一緒に使用し、grepのパターンマッチング機能を使用することもできます。「_pin_」という文字列が名前に入っているファイルを探してみましょう:

ls | grep _pin_

これは、2つのワイルドカードを使用してlsを単独で使用する場合とほぼ同じです:

ls | grep _pin_

ls *_pin_*

なぜほぼ同じなのでしょうか?異なるレイアウトに注意してください。grepは出力を1行に1つのファイル名というフォーマットに強制します。

非表示文字

ファイル名に非表示文字や制御文字が含まれていることがあります。これは、通常、Webからダウンロードしたアーカイブを展開したり、Gitリポジトリを取得したりしたときに、元の作成者がファイルの作成を誤って認識しなかった場合に発生します。

私たちの奇妙なファイルは次のとおりです:

ファイルブラウザでファイル名を見て「F2」を押して名前を変更すると、非表示文字は奇妙な記号で表されます。

-b(エスケープ)オプションを使用すると、ファイル名に実際に含まれている内容を確認できます。このオプションにより、lsはCプログラミング言語のエスケープシーケンスを使用して制御文字を表すようになります。

ls -b a*

謎の文字は、Cで「\n」として表される改行文字であることがわかりました。

ファイルを無視する

リストから特定のファイルを省略するには、--hideオプションを使用します。リストにバックアップ「.bak」ファイルを表示したくないとします。次のコマンドを使用できます:

ls

ls --hide=*.bak

「.bak」ファイルは2番目のリストには含まれません。

長いフォーマットのリスト

-l(長いリスト)オプションにより、lsは各ファイルの詳細情報を提供します。

ls -l

ここには多くの情報があるため、順を追って説明します。

lsが最初に表示するのは、リスト内のすべてのファイルの合計サイズです。次に、各ファイルやディレクトリが1行ずつ表示されます。

最初の10文字とダッシュのセットは、ファイルの種類と所有者、グループ、およびその他のファイルの権限です。

最初の文字はファイルの種類を表します。次のいずれかになります:

  • -: 通常のファイル。
  • b: ブロック特殊ファイル。
  • c: 文字特殊ファイル。
  • d: ディレクトリ。
  • l: シンボリックリンク。
  • n: ネットワークファイル。
  • p: 名前付きパイプ。
  • s: ソケット。

次の9文字は、3文字の3つのグループが連続して表示されます。3文字の各グループは、その順番で読み取り、書き込み、実行の権限を表します。権限が付与されている場合、rw、またはxが表示されます。権限が付与されていない場合は、ハイフン-が表示されます。

最初の3文字のセットは、ファイルの所有者の権限です。2番目の3つの権限のセットはグループメンバー用で、最後の3つの権限のセットはその他用です。

所有者の実行権限がsで表されることがあります。これはsetuidビットです。これが存在する場合、ファイルはファイルを実行しているユーザーではなく、ファイルの所有者の権限で実行されることを意味します。

グループの実行権限もsになる可能性があります。これはsetgidビットです。これがファイルに適用されると、ファイルは所有者のグループの権限で実行されることを意味します。ディレクトリで使用すると、その中に作成されたファイルは、ファイルを作成しているユーザーではなく、作成されているディレクトリからグループの権限を取得します。

他のユーザーの実行権限は、tで表されることがあります。これがスティッキービットです。これは通常、ディレクトリに適用されます。これが設定されている場合、ディレクトリ内のファイルに設定されている書き込み権限と実行権限に関係なく、ファイルの所有者、ディレクトリの所有者、またはrootユーザーのみがディレクトリ内のファイルを名前変更したり削除したりできます。

スティッキービットの一般的な使用例は、「/tmp」などのフォルダーです。これは、コンピュータ上のすべてのユーザーが書き込み可能です。ディレクトリのスティッキービットにより、ユーザー(およびユーザーによって起動されたプロセス)は、自分の一時ファイルのみを名前変更したり削除したりできるようになります。

「/tmp」ディレクトリにスティッキービットが表示されています。-d(ディレクトリ)オプションの使用に注意してください。これにより、lsはディレクトリの詳細を報告します。このオプションがなければ、lsはディレクトリ内のファイルを報告します。

ls -l -d /tmp

権限の後に続く数字は、ファイルまたはディレクトリへのハードリンクの数です。ファイルの場合、これは通常1ですが、他のハードリンクが作成された場合、この数は増加します。ディレクトリには通常、少なくとも2つのハードリンクがあります。1つはそれ自体へのリンクで、もう1つは親ディレクトリ内のエントリです。

所有者とグループの名前が次に表示されます。その後にファイルサイズとファイルの最終変更日が続きます。最後に、ファイル名が指定されています。

人間が読めるファイルサイズ

ファイルサイズをバイト単位で表示しても、必ずしも便利ではありません。最も適切な単位(キロバイト、メガバイトなど)でファイルサイズを表示するには、-h(人間が読める)オプションを使用します:

ls -l -h

隠しファイルを表示する

隠しファイルを表示するには、-a(すべて)オプションを使用します:

ls -l -a

「.」と「..」という2つのエントリは、それぞれ現在のディレクトリと親ディレクトリを表します。「.base_settings」というファイルが初めて表示されました。

リストから「.」と「..」を省略する

「.」と「..」のエントリでリストが乱雑になるのを避けたいが、隠しファイルは表示したい場合は、-A(ほとんどすべて)オプションを使用します:

ls -l -A

隠しファイルは引き続きリストされますが、"."と".."のエントリは抑制されます。

ディレクトリを再帰的にリストする

lsですべてのサブディレクトリ内のファイルをリストするには、-R(再帰的)オプションを使用します。

ls -l -R

lsは、開始ディレクトリの下にあるディレクトリツリー全体を処理し、各サブディレクトリ内のファイルをリストします。

UIDとGIDを表示する

ユーザー名とグループ名の代わりにユーザーIDとグループIDを表示するには、-n(数値uidとgid)オプションを使用します。

ls -n

リストをソートする

リストを拡張子、ファイルサイズ、または変更日時でソートできます。これらのオプションは長いリスト形式で使用される必要はありませんが、通常はそうすることが理にかなっています。ファイルサイズでソートする場合は、リスト内のファイルサイズを確認することが理にかなっています。拡張子タイプでソートする場合、長いリスト形式はそれほど重要ではありません。

拡張子でソートするには、-X(拡張子でソート)オプションを使用します。

ls -X -1

ディレクトリが最初にリストされ(拡張子はありません)、その後、拡張子に従ってアルファベット順に続きます。

ファイルサイズでソートするには、-S(ファイルサイズでソート)オプションを使用します。

ls -l -h -S

ソート順は最大から最小になります。

リストを変更日時でソートするには、-t(変更日時でソート)オプションを使用します。

ls -l -t

リストは変更日時でソートされます。

ファイルの変更日時が今年の場合、表示される情報は月、日、および時刻です。変更日が今年ではなかった場合、表示される情報は月、日、および年です。

ディレクトリ内の最新および最古のファイルを取得する簡単な方法は、headおよびtailコマンドでlsを使用することです。

最新ファイルまたはディレクトリを取得するには、次のコマンドを使用します:

ls -t | head -1

最古のファイルまたはディレクトリを取得するには、次のコマンドを使用します:

ls -t | tail -1

ソート順を逆にする

ソート順を逆にするには、-r(逆)オプションを使用します。

ls -l -h -S -r

リストは、最小のファイルから最大のファイルの順に並べ替えられます。

さらに詳しく

lsのマニュアルページを確認すると、さらに多くのオプションがあります。そのうちのいくつかはある程度不明瞭なユースケースを満たしていますが、時折、それらについて知っていると便利です。

Linuxが提供できる最大限の精度でファイルのタイムスタンプを表示する必要がありますか?フルタイムオプションを使用します:

ls --full-time

ファイルのinode番号を確認したいですか?inodeオプションを使用します:

ls -i

モノクロディスプレイで作業していて、ディレクトリやリンクのファイルを混同するリスクをすべて排除したいですか?分類オプションを使用すると、lsは各リストエントリに次のいずれかを付加します:

  • /: ディレクトリ。
  • @: シンボリックリンク。
  • |: 名前付きパイプ。
  • =: ソケット。
  • *: 実行可能ファイル

ls -F

少し調べてみてください。lsは豊富な情報源であり、宝石を掘り当て続けるでしょう。