よく使うコマンドの1つで、改めてオプションやどんなことできるかって思ってしまったので調べ直してみました。
すぐ出てきて使えるようになるっていうより、できることを把握しておくのが大事かなと思ってまとめます。
基本的な使い方
そもそも、ls
コマンドは、Linux や UNIX 系 OS でディレクトリの内容(ファイルやフォルダ)を一覧表示するためのコマンドです。オプションで詳細情報の表示や特定の条件に合致するファイルのフィルタリングできます。
オプションを何も指定しないと、カレントディレクトリのファイルとフォルダを一覧表示します。
$ ls
出力例:
example.txt
よく使うオプション
色々ありますが、個人的によく使うものをまとめました。
コマンド | 説明 |
---|---|
ls | ファイル一覧表示 |
ls -l | 詳細情報を表示 |
ls -a | 隠しファイルも表示 |
ls -h | サイズを人間向けに |
ls -t | 更新時間順 |
ls -F | ファイルタイプ表示 |
ls -R | 再帰的に表示 |
詳細情報を表示: -l
各ファイルの詳細情報(パーミッション、所有者、グループ、サイズ、更新日時など)を表示します。
$ ls -l
出力例:
-rw-r--r-- 1 user group 1234 Jan 31 10:00 example.txt
-rw-r--r--
→ ファイルのパーミッション(後述)1
→ ハードリンクの数user
→ 所有者group
→ 所属グループ1234
→ ファイルサイズ(バイト単位)Jan 31 10:00
→ 最終更新日時example.txt
→ ファイル名
隠しファイルも表示: -a
ドット (.
) で始まる隠しファイルも表示します。
$ ls -a
出力例:
. .. .bashrc .profile example.txt
.
→ カレントディレクトリ..
→ 親ディレクトリ.bashrc
や.profile
などの設定ファイル
読みやすいファイルサイズ表示: -
h
ファイルサイズを KB
, MB
, GB
などの単位で表示します。
$ ls -lh
出力例:
rw-r--r-- 1 user group 1.2K Jan 31 10:00 example.txt
サイズが 1.2K
(1.2キロバイト)と、可読性が向上します。
更新日時順に並べる: -
t
ファイルの更新日時順にソート(新しいものが先)。
$ ls -lt
出力例:
-rw-r--r-- 1 user group 1024 Jan 31 12:00 latest.log
-rw-r--r-- 1 user group 512 Jan 30 15:30 old.log
■逆順(古いものが先): -tr
$ ls -ltr
出力例:
-rw-r--r-- 1 user group 512 Jan 30 15:30 old.log
-rw-r--r-- 1 user group 1024 Jan 31 12:00 latest.log
ファイルの種類を識別: -F
ファイルの種類に応じて以下の記号を付与します:
/
→ ディレクトリ*
→ 実行可能ファイル@
→ シンボリックリンク|
→ FIFO(名前付きパイプ)=
→ ソケット
$ ls -F
出力例:
bin/ script.sh* link@ pipe|
ディレクトリの内容を再帰的に表示: -R
サブディレクトリの中身もすべて表示します。
$ ls -R
出力例:
.:
file1.txt dir1/
./dir1:
file2.txt file3.txt
人間に優しいカラー表示: --color=auto
ファイルタイプごとに色分け(デフォルトで色分けされていることが多いです)。
$ ls --color=auto
出力例:
. .. exlDir exsample.txt
日付の表記変更: --time-style=long-is
日付をYYYY-MM-DD HH:MM
形式で表示
$ ls -l --time-style=long-iso
出力例:
-rw-r--r-- 1 user group 2.3K 2024-01-31 10:30 report.txt
たまにしか使わないけど便利なオプション
オプション | 説明 |
---|---|
--full-time | 秒単位のタイムスタンプを表示 |
--block-size=[SIZE] | サイズ単位を指定(KB/MB/GB) |
-i | ファイルのIノード番号を表示 |
-L | シンボリックリンクのリンク先情報を表示 |
-n | 数値のUID/GIDを表示 |
--sort=[size/time/extension] | カスタムソート |
--author | ファイルの作成者を表示 |
-1 | 1行1ファイルで表示 |
-s | ディスクのブロック使用量を表示 |
拡張タイムスタンプを表示(--full-time
)
通常の ls -l
では日付までしか表示されませんが、このオプションを使うと秒単位まで正確なタイムスタンプが表示されます。
$ ls -l --full-time
出力例:
-rw-r--r-- 1 user group 1234 2024-08-09 14:32:10.123456789 example.txt
ブロックサイズを指定(--block-size=[SIZE]
)
ファイルサイズの表示単位を指定できます。
$ ls -lh --block-size=M # MB単位で表示
$ ls -lh --block-size=K # KB単位で表示
$ ls -lh --block-size=G # GB単位で表示
出力例(--block-size=M
):
-rw-r--r-- 1 user group 5M 2024-08-09 example.txt
ファイルのIノード番号を表示(-i
)
ファイルの I ノード番号(ファイルシステム内での識別子)を表示します。
$ ls -i
出力例:
1234567 example.txt
シンボリックリンクの詳細を表示(-L
)
シンボリックリンクが指しているファイルの情報を表示します。
$ ls -lL
通常、ls -l
ではシンボリックリンク自体の情報が表示されますが、-L
を追加すると、リンク先のファイルの情報が表示されます。
出力例:
■ ls -l ではlrwxrwxrwx 1 user group 4096 Jan 30 10:00 sample.ln
->realfile.txt
■ ls -lL だと-rw-r--r-- 1 user group 4096
Jan 30
10:00 realfile.txt
オーナーをUID/GIDで表示(--numeric-uid-gid
)
通常 ls -l
は所有者やグループの名前を表示しますが、これをUID・GIDの数値で表示できます。
$ls -ln
または
$ ls -l --numeric-uid-gid
出力例:
-rw-r--r-- 1 1000 1000 1234 2024-08-09 example.txt
ソートをカスタマイズ(--sort=[TYP
デフォルトでは ls
はファイル名順 (--sort=name
) ですが、以下のようにソート順を変更できます。
$ ls -l --sort=size # ファイルサイズ順
$ ls -l --sort=time # 更新時刻順
$ ls -l --sort=extension # 拡張子順
$ ls -l --sort=none # ソートしない(元の順番)
出力例(--sort=size
):
-rw-r--r-- 1 user group 10M file1.log
-rw-r--r-- 1 user group 5M file2.log
-rw-r--r-- 1 user group 500K file3.log
ls -l
に加えて、ファイルの作成者(Author)も表示します(特定の環境でのみ有効)。
$ ls -l --author
出力例:
-rw-r--r-- 1 user author1 1234 2024-08-09 example.txt
出力を1行1ファイルで表示(-1
)
ファイルを横に並べず、1行に1ファイルずつ表示します。
$ ls -1
出力例:
file1.txt
file2.txt
file3.txt
ファイルが格納されているディスクのブロック番号を表示(-s
)
各ファイルのディスク上のブロックサイズを表示できます。
$ ls -s
出力例:
出力例:
4 example.txt
8 largefile.log

コメント