LinuC入門|lsコマンドでファイルとディレクトリを確認する

見えている名前だけでなく、隠しファイル、権限、サイズ、更新日時まで。lsコマンドでLinuxのファイル構成を正しく読み取ろう。

Linuxでファイル管理を行うとき、最初に必要になるのが「どのようなファイルやディレクトリが存在しているのか」を確認する操作です。

WindowsのエクスプローラーやGNOMEのファイルマネージャーでは、ファイルをアイコンや一覧で確認できます。一方、CUI環境では、コマンドを使ってディレクトリの内容を調べます。

そのときに使用する代表的なコマンドがlsです。

lsコマンドを実行すると、カレントディレクトリにあるファイルやディレクトリの名前を一覧表示できます。さらにオプションを組み合わせることで、次のような情報も確認できます。

  • 隠しファイルを含むすべての項目
  • ファイルの種類とアクセス権
  • 所有ユーザーと所有グループ
  • ファイルサイズ
  • 最終更新日時
  • iノード番号
  • サブディレクトリ内の内容
  • ファイルの種類を表す記号

lsはLinuxの基本的なコマンドですが、オプションによって表示内容が大きく変わります。単にファイル名を見るだけでなく、表示された情報を正しく読み取れるようになることが大切です。

この記事ではAlmaLinux 10.2を使用し、一般ユーザーsuzukiによる操作を中心に、lsコマンドの書式、主なオプション、表示結果の読み方を詳しく解説します。

lsコマンドとは

lsコマンドは、ファイルやディレクトリの情報を一覧表示するコマンドです。

lsはlistに由来する名前です。引数にディレクトリを指定すると、そのディレクトリ内の内容が表示されます。ファイルを指定すると、指定したファイルの情報が表示されます。

引数を省略した場合は、カレントディレクトリが対象になります。

GNU版lsの正式な動作としても、引数を省略した場合はカレントディレクトリを表す.が指定されたものとして処理されます。また、通常は名前が.から始まるファイルを表示しません。

lsコマンドの書式

ls [オプション] [ディレクトリまたはファイル]

書式にある各項目の意味は次のとおりです。

項目説明
lsファイルやディレクトリの情報を表示するコマンド
オプション表示する項目、形式、並び順などを指定する
ディレクトリ内容を表示したいディレクトリを指定する
ファイル情報を表示したいファイルを指定する

オプションと引数は省略できます。

suzuki@AlmaLinux:~$ ls

この場合、現在作業しているディレクトリの内容が表示されます。

lsコマンドの主なオプション

この記事で扱う主なオプションは次のとおりです。

オプション説明
-a名前が.から始まる隠しファイルを含め、すべての項目を表示する
-lファイルの種類、アクセス権、所有者、サイズ、更新日時などを詳細表示する
-hサイズをK、M、Gなどの読みやすい単位で表示する。通常は-lと組み合わせる
-iファイルやディレクトリのiノード番号を表示する
-R指定したディレクトリ以下を再帰的に表示する
-t最終更新日時を基準に、新しいものから順番に表示する
-Fファイルの種類に応じた識別記号を名前の末尾に付ける
-dディレクトリの内容ではなく、ディレクトリ自身の情報を表示する

複数のオプションは、次のようにまとめて指定できます。

ls -lah

これは、次の指定を組み合わせたものです。

  • -lによる詳細表示
  • -aによる隠しファイルの表示
  • -hによる読みやすいサイズ表示

オプションを別々に記述することもできます。

ls -l -a -h

どちらも基本的には同じ指定です。

図1:lsコマンドの指定と表示対象

この図から分かること

lsコマンドは、引数の指定によって表示対象が変わります。

引数を省略した場合はカレントディレクトリ、ディレクトリを指定した場合はその中にある項目、ファイルを指定した場合はそのファイルが表示対象になります。

オプションは表示方法を変更するために使います。同じ対象でも、-lや-aなどを付けることで、確認できる情報を増やせます。

引数を省略してカレントディレクトリを表示する

引数を付けずにlsを実行すると、カレントディレクトリの内容が表示されます。

suzuki@AlmaLinux:~$ ls
Desktop    Downloads  Pictures  Templates  server-note.txt
Documents  Music      Public    Videos

プロンプトに表示されている~は、一般ユーザーsuzukiのホームディレクトリを表します。

したがって、この例で表示されているのは次のディレクトリの内容です。

/home/suzuki

表示結果から、ホームディレクトリにはDesktop、Documents、Downloadsなどのディレクトリと、server-note.txtというファイルがあることが分かります。

通常のlsでは、名前だけが表示されます。ファイルなのかディレクトリなのか、誰が所有しているのか、どのくらいのサイズなのかといった詳しい情報は表示されません。

ディレクトリを指定して内容を表示する

lsの引数にディレクトリを指定すると、そのディレクトリ内にあるファイルやサブディレクトリが表示されます。

suzuki@AlmaLinux:~$ ls Documents
linux-study.txt  network-note.txt  report.txt

この例では、カレントディレクトリにあるDocumentsを指定しています。

Documentsは相対パスです。カレントディレクトリを基準として、Documentsディレクトリを探します。

絶対パスで指定することもできます。

suzuki@AlmaLinux:~$ ls /etc
adjtime    chrony.conf  hosts       passwd
aliases    dnf          hostname    ssh

/etcはルートディレクトリから始まる絶対パスです。カレントディレクトリがどこであっても、同じ/etcが表示対象になります。

項目数が多いディレクトリでは、実際にはさらに多くの名前が表示されます。

ファイルを指定して情報を表示する

lsにはディレクトリだけでなく、ファイルも指定できます。

suzuki@AlmaLinux:~$ ls /etc/hosts
/etc/hosts

オプションを付けない場合は、指定したファイルの名前が表示されます。

ファイルの詳しい情報を確認したい場合は、-lを付けます。

suzuki@AlmaLinux:~$ ls -l /etc/hosts
-rw-r--r--. 1 root root 158  8月 13 09:20 /etc/hosts

この例では、/etc/hostsの種類、アクセス権、所有者、ファイルサイズ、更新日時などを確認できます。

-lで詳しい情報を表示する

-lを指定すると、ファイルやディレクトリの情報が1項目につき1行で詳しく表示されます。

lはlong formatを表し、長い形式で情報を表示するためのオプションです。

-lの書式

ls -l [ディレクトリまたはファイル]

カレントディレクトリを詳細表示してみましょう。

suzuki@AlmaLinux:~$ ls -l
合計 12
drwxr-xr-x. 2 suzuki suzuki   29  8月 13 18:20 Desktop
drwxr-xr-x. 2 suzuki suzuki   68  8月 13 19:05 Documents
drwxr-xr-x. 2 suzuki suzuki    6  8月 13 18:20 Downloads
-rw-r--r--. 1 suzuki suzuki 1845  8月 13 20:15 server-note.txt

-lの表示には多くの情報が含まれています。

server-note.txtの行を項目ごとに分けると、次のようになります。

-rw-r--r--.  1  suzuki  suzuki  1845  8月 13 20:15  server-note.txt
項目表示例説明
ファイルの種類とアクセス権-rw-r--r--.ファイルの種類と所有者、グループ、その他のユーザーに対するアクセス権
ハードリンク数1そのiノードを参照しているハードリンクの数
所有ユーザーsuzukiファイルを所有しているユーザー
所有グループsuzukiファイルを所有しているグループ
サイズ1845ファイルサイズ。通常はバイト単位
最終更新日時8月 13 20:15ファイル内容が最後に更新された日時
名前server-note.txtファイルまたはディレクトリの名前

先頭に表示される合計は、一覧に含まれるファイルがディスク上で使用しているブロック数の合計です。各ファイルのサイズを単純に足した値とは限りません。

ファイルの種類とアクセス権の読み方

-lの先頭に表示される文字列は、ファイルの種類とアクセス権を表します。

-rw-r--r--.

最初の1文字はファイルの種類です。

先頭文字種類
-通常ファイル
dディレクトリ
lシンボリックリンク

続く9文字は、3文字ずつ次のように分かれています。

rw-  r--  r--
範囲対象
最初の3文字所有ユーザーのアクセス権
中央の3文字所有グループのアクセス権
最後の3文字その他のユーザーのアクセス権

アクセス権を表す文字の意味は次のとおりです。

文字意味
r読み取りが許可されている
w書き込みが許可されている
x実行が許可されている
-対応する権限が許可されていない

たとえば、-rw-r--r--は次の状態を表します。

  • 所有ユーザーは読み取りと書き込みができる
  • 所有グループは読み取りだけできる
  • その他のユーザーも読み取りだけできる

AlmaLinuxでは、アクセス権の末尾に.が表示されることがあります。この記号は、SELinuxなどに関連する追加のセキュリティ情報が設定されていることを示します。

図2:ls -lで表示される情報の読み方

この図から分かること

ls -lの表示では、ファイル名だけでなく、ファイルの種類、アクセス権、所有者、サイズ、更新日時などを確認できます。

特に先頭の文字列には、ファイルの種類とアクセス権がまとめて表示されています。トラブル調査やファイル管理では、名前だけを見るのではなく、所有ユーザーやアクセス権も一緒に確認することが大切です。

-hでサイズを読みやすく表示する

-lでは、通常、ファイルサイズがバイト単位で表示されます。

大きなファイルでは桁数が多くなるため、サイズを直感的に把握しにくいことがあります。そのような場合は-hを使用します。

hはhuman-readableを表し、人が読みやすい単位でサイズを表示します。

-hの書式

ls -lh [ディレクトリまたはファイル]

-hはファイルサイズを表示する-lと組み合わせて使用します。

suzuki@AlmaLinux:~$ ls -lh Documents
合計 2.5M
-rw-r--r--. 1 suzuki suzuki 1.8K  8月 13 19:05 linux-study.txt
-rw-r--r--. 1 suzuki suzuki 2.5M  8月 13 18:42 network-diagram.png
-rw-r--r--. 1 suzuki suzuki  620  8月 12 21:10 report.txt

サイズに付く主な単位は次のとおりです。

表示例おおよその意味
620620バイト
1.8K約1.8キロバイト
2.5M約2.5メガバイト
1.2G約1.2ギガバイト

-hを付けると表示が読みやすくなりますが、厳密なバイト数ではなく、単位に合わせて丸められた値が表示されます。

ディレクトリのサイズを読むときの注意

ls -lhでディレクトリを詳細表示すると、ディレクトリにもサイズが表示されます。

suzuki@AlmaLinux:~$ ls -lh
drwxr-xr-x. 2 suzuki suzuki 4.0K  8月 13 18:20 Documents

ここに表示される4.0Kは、Documents内に保存されている全ファイルの合計サイズではありません。ディレクトリそのものを管理するために使用されている情報のサイズです。

そのため、ls -lhで表示されるディレクトリのサイズだけを見て、ディレクトリ内のデータ量を判断しないようにしましょう。

-aで隠しファイルを表示する

Linuxでは、名前の先頭が.から始まるファイルやディレクトリを隠しファイル、またはドットファイルと呼びます。

通常のlsでは、これらは表示されません。

suzuki@AlmaLinux:~$ ls
Desktop    Downloads  Pictures  Templates
Documents  Music      Public    Videos

-aを付けると、隠しファイルを含むすべての項目が表示されます。

-aの書式

ls -a [ディレクトリ]

使用例は次のとおりです。

suzuki@AlmaLinux:~$ ls -a
.              .bashrc  .local      Documents  Pictures   Videos
..             .cache   Desktop     Downloads  Public
.bash_logout   .config  Documents   Music      Templates
.bash_profile

-aはallを表します。

表示結果には、.bashrc、.config、.localなど、通常のlsでは表示されなかった項目が含まれています。

表示説明
.カレントディレクトリ自身
..1つ上の親ディレクトリ
.bash_logoutログアウト時の処理に関係する設定ファイル
.bash_profileログイン時のシェル設定に関係するファイル
.bashrcBashの対話操作に関係する設定ファイル
.configユーザーごとの設定ファイルを保存するディレクトリ
.localユーザーごとのデータやプログラムなどを保存するディレクトリ

隠しファイルは不要なファイルという意味ではありません。アプリケーションやシェルの設定に使用される重要なファイルが多いため、内容を確認せずに削除しないようにしましょう。

-aと-lを組み合わせる

隠しファイルを含めて詳しい情報を表示するときは、-aと-lを組み合わせます。

suzuki@AlmaLinux:~$ ls -la
合計 32
drwx------. 16 suzuki suzuki 4096  8月 13 20:20 .
drwxr-xr-x.  3 root   root     20  8月 12 09:00 ..
-rw-------.  1 suzuki suzuki 1250  8月 13 20:18 .bash_history
-rw-r--r--.  1 suzuki suzuki   18  1月 15  2025 .bash_logout
-rw-r--r--.  1 suzuki suzuki  141  1月 15  2025 .bash_profile
-rw-r--r--.  1 suzuki suzuki  492  1月 15  2025 .bashrc
drwx------. 12 suzuki suzuki 4096  8月 13 18:30 .config

この指定では、隠しファイルについてもアクセス権、所有者、サイズ、更新日時を確認できます。

サイズを読みやすくする場合は、さらに-hを加えます。

suzuki@AlmaLinux:~$ ls -lah

-dでディレクトリ自身を表示する

lsにディレクトリを指定すると、通常はそのディレクトリの中身が表示されます。

suzuki@AlmaLinux:~$ ls Documents
linux-study.txt  network-note.txt  report.txt

Documentsディレクトリ自身の情報を確認したい場合は、-dを使用します。

-dの書式

ls -d [ディレクトリ]

-dだけを付けると、指定したディレクトリ自身の名前が表示されます。

suzuki@AlmaLinux:~$ ls -d Documents
Documents

ディレクトリ自身のアクセス権、所有者、サイズ、更新日時を確認する場合は、-lと組み合わせます。

suzuki@AlmaLinux:~$ ls -ld Documents
drwxr-xr-x. 2 suzuki suzuki 68  8月 13 19:05 Documents

カレントディレクトリ自身を確認する場合は、.を指定します。

suzuki@AlmaLinux:~$ ls -ld .
drwx------. 16 suzuki suzuki 4096  8月 13 20:20 .
指定表示される内容
ls DocumentsDocumentsの中身
ls -d DocumentsDocumentsというディレクトリ自身
ls -ld DocumentsDocuments自身の詳しい情報
ls -ld .カレントディレクトリ自身の詳しい情報

-dは、ディレクトリのアクセス権や所有者を調べるときに便利です。

-iでiノード番号を表示する

-iを指定すると、ファイルやディレクトリのiノード番号が表示されます。

-iの書式

ls -i [ディレクトリまたはファイル]

使用例は次のとおりです。

suzuki@AlmaLinux:~$ ls -i Documents
1048721 linux-study.txt  1048725 network-note.txt  1048730 report.txt

各名前の前に表示されている数値がiノード番号です。

iノード番号ファイル名
1048721linux-study.txt
1048725network-note.txt
1048730report.txt

Linuxのファイルシステムでは、ファイルの種類、アクセス権、所有者、サイズ、保存位置などの管理情報がiノードに記録されています。

ファイル名は、iノードを参照するための名前として使われています。そのため、Linuxではファイル名とファイルの管理情報が分けて扱われています。

-iと-lを組み合わせると、iノード番号と詳細情報を同時に確認できます。

suzuki@AlmaLinux:~$ ls -li Documents
合計 12
1048721 -rw-r--r--. 1 suzuki suzuki 1845  8月 13 19:05 linux-study.txt
1048725 -rw-r--r--. 1 suzuki suzuki 3270  8月 13 18:52 network-note.txt
1048730 -rw-r--r--. 1 suzuki suzuki  620  8月 12 21:10 report.txt

iノード番号は、同じファイルシステム内でファイルを識別するときに利用されます。

-Rでサブディレクトリの内容も表示する

通常のlsは、指定したディレクトリの直下だけを表示します。

-Rを指定すると、サブディレクトリの中へ順番に入り、その内容も再帰的に表示します。

Rはrecursiveを表します。

-Rの書式

ls -R [ディレクトリ]

Documents以下を表示する例を見てみましょう。

suzuki@AlmaLinux:~$ ls -R Documents
Documents:
Linux  Network  report.txt

Documents/Linux:
command-note.txt  permission-note.txt

Documents/Network:
ip-address.txt  routing.txt

表示結果は、ディレクトリごとに分かれています。

Documents:

この見出しの下には、Documents直下の内容が表示されます。

Documents/Linux:

この見出しの下には、Documents内にあるLinuxサブディレクトリの内容が表示されます。

-Rはディレクトリ構成全体を確認するときに便利ですが、階層が深い場所やファイル数が多い場所で実行すると、大量の情報が表示されます。

特にrootユーザーで大きなディレクトリを指定する場合は、表示範囲をよく確認してから実行しましょう。

-tで更新日時順に並べ替える

通常のlsでは、現在のロケール設定に基づいて名前順に表示されます。

-tを指定すると、最終更新日時を基準として、新しく更新された項目から順番に表示されます。

-tの書式

ls -t [ディレクトリ]

使用例は次のとおりです。

suzuki@AlmaLinux:~$ ls -t Documents
linux-study.txt  network-note.txt  report.txt

名前だけでは更新日時が分からないため、通常は-lと組み合わせると確認しやすくなります。

suzuki@AlmaLinux:~$ ls -lt Documents
合計 12
-rw-r--r--. 1 suzuki suzuki 1845  8月 13 19:05 linux-study.txt
-rw-r--r--. 1 suzuki suzuki 3270  8月 13 18:52 network-note.txt
-rw-r--r--. 1 suzuki suzuki  620  8月 12 21:10 report.txt

この結果では、最も新しく更新されたlinux-study.txtが先頭に表示されています。

-tは、次のような場面で便利です。

  • 最近編集したファイルを探したい
  • 新しく作成されたログを確認したい
  • 更新された設定ファイルを見つけたい
  • 複数のファイルの更新順を確認したい

-Fでファイルの種類を見分ける

-Fを指定すると、ファイルの種類に応じた識別記号が名前の末尾に追加されます。

-Fの書式

ls -F [ディレクトリ]

使用例は次のとおりです。

suzuki@AlmaLinux:~$ ls -F
Desktop/    Downloads/  Pictures/  Templates/  backup@
Documents/  Music/      Public/    Videos/     maintenance*

名前の末尾に付いた記号によって、項目の種類を見分けられます。

記号種類表示例
/ディレクトリDocuments/
*実行可能ファイルmaintenance*
@シンボリックリンクbackup@

これらの記号は、実際のファイル名に含まれているわけではありません。lsが種類を分かりやすくするため、表示するときだけ追加しています。

たとえば、Documents/と表示されていても、実際のディレクトリ名はDocumentsです。

-aと-Fを組み合わせると、隠しファイルを含めて種類を確認できます。

suzuki@AlmaLinux:~$ ls -aF
./   .bash_profile  .config/  Desktop/    Downloads/  Public/
../  .bashrc        .local/   Documents/  Pictures/   Videos/

この表示では、.config/や.local/が隠しディレクトリであることも分かります。

図3:目的に応じたlsオプションの使い分け

この図から分かること

lsの各オプションには、それぞれ異なる役割があります。

ファイルの詳細情報が必要なときは-l、隠しファイルを確認するときは-a、更新日時順に確認するときは-tというように、調べたい内容に合わせてオプションを選びます。

複数の情報が必要な場合は、ls -laやls -lhのようにオプションを組み合わせられます。

よく使用するオプションの組み合わせ

lsのオプションは、単独で使用するだけでなく、目的に応じて組み合わせると便利です。

コマンド表示内容
lsカレントディレクトリの通常の項目を表示
ls -a隠しファイルを含めて表示
ls -l所有者、サイズ、更新日時などを詳細表示
ls -lhサイズを読みやすい単位で詳細表示
ls -la隠しファイルを含めて詳細表示
ls -lah隠しファイルを含め、サイズを読みやすく詳細表示
ls -liiノード番号を含めて詳細表示
ls -lt更新日時が新しい順に詳細表示
ls -aF隠しファイルを含め、種類を表す記号を付けて表示
ls -ldディレクトリ自身の詳細情報を表示
ls -lRサブディレクトリ内も再帰的に詳細表示

普段の確認では、ls -l、ls -la、ls -lhをよく使用します。

障害調査などで最近更新されたファイルを探すときは、ls -ltが便利です。ディレクトリ自身のアクセス権を調べたいときは、ls -ldを使用します。

一般ユーザーとrootユーザーで表示範囲が異なる場合

lsはファイルやディレクトリを変更するコマンドではありませんが、対象を参照するための権限が必要です。

一般ユーザーsuzukiで自分のホームディレクトリを表示する場合は、通常、問題なく確認できます。

suzuki@AlmaLinux:~$ ls -la

一方、rootユーザーのホームディレクトリは、一般ユーザーから自由に参照できないように設定されています。rootユーザー自身であれば確認できます。

root@AlmaLinux:~# ls -la
合計 28
dr-xr-x---.  4 root root  180  8月 13 20:30 .
dr-xr-xr-x. 18 root root  235  8月 12 09:00 ..
-rw-------.  1 root root 1260  8月 13 20:28 .bash_history
-rw-r--r--.  1 root root   18  1月 15  2025 .bash_logout
-rw-------.  1 root root 1325  8月 12 09:15 anaconda-ks.cfg

一般ユーザーとrootユーザーでは、次の点が異なります。

  • ホームディレクトリの場所が異なる
  • 所有しているファイルが異なる
  • 参照できるディレクトリの範囲が異なる
  • アクセス権によって表示できない場所がある
  • 同じlsを実行しても表示結果が異なる

rootは広い範囲を参照できますが、通常の学習や日常操作では一般ユーザーsuzukiを使用します。

lsの表示結果を見るときの注意点

lsを使用するときは、次の点を意識すると表示結果を正しく読み取れます。

  • 引数を省略するとカレントディレクトリが対象になる
  • 通常のlsでは隠しファイルは表示されない
  • 隠しファイルを確認するときは-aを使用する
  • 詳しい情報を確認するときは-lを使用する
  • -lのファイルサイズは通常バイト単位で表示される
  • 読みやすいサイズ表示には-lと-hを組み合わせる
  • ディレクトリに表示されるサイズは、中身の合計サイズではない
  • ディレクトリ自身を確認するときは-dを使用する
  • -tでは更新日時が新しいものから表示される
  • -Fで追加される記号は実際のファイル名には含まれない
  • -Rは表示量が非常に多くなる場合がある
  • 参照権限がないディレクトリは内容を表示できない
  • 表示順は言語や地域の設定によって変わる場合がある

lsは内容を参照するコマンドなので、実行するだけでファイルが削除されたり、名前が変わったりすることはありません。

ファイル操作を始める前には、まずlsで対象を確認する習慣を付けておくと、違うディレクトリのファイルを操作するミスを防ぎやすくなります。