🐧

【Linux】lsコマンドのオプションを理解する

2024/07/07に公開

目的

実務でよく使用するlsコマンドにおいて、いまいちオプションの使い分け&オプション組み合わせの理解ができていない気がするため、アプトプットをかねてまとめました。
目標:作業に適したlsコマンドのオプションを使い分けられるようにする。

環境

以下の記事を参考にしてMacOS上にDocker + Linuxの環境を構築しました。
https://zenn.dev/bloomer/articles/5fd4e929fdb77a

ディレクトリ・ファイル構成

.
├── Dockerfile
├── dir1
│   ├── dir2
│   │   ├── file_1
│   │   └── file_2
│   ├── file_1
│   ├── file_2
│   └── file_3
└── docker-compose.yml

オプションなし

root@c5776e759f48:/dir_1/dir1# ls 
dir2  file_1  file_2  file_3

-lオプション

  • 長形式
  • パーミッション、所有者、グループ、サイズ、更新日時を表示
root@c5776e759f48:/dir_1/dir1# ls -l
total 12
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root   5  76 23:57 file_1
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root  15  77 00:07 file_3

-dオプション

  • ディレクトリ自体の情報を表示
  • 内容は表示しない
root@c5776e759f48:/dir_1/dir1# ls -d dir2
dir2

-hオプション

  • ファイルサイズを人間が読みやすい形式(K, M, Gなど)で表示
root@c5776e759f48:/dir_1/dir1# ls -lh
total 12K // ここ
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root   5  76 23:57 file_1
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root  15  77 00:07 file_3

-rオプション

  • 逆順でソート
root@c5776e759f48:/dir_1/dir1# ls -lr
total 12
-rw-r--r-- 1 root root  15  77 00:07 file_3
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root   5  76 23:57 file_1
drwxr-xr-x 4 root root 128  76 23:58 dir2

-Rオプション

  • 再帰的にサブディレクトリの内容も表示
root@c5776e759f48:/dir_1/dir1# ls -lR
.:
total 12
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root   5  76 23:57 file_1
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root  15  77 00:07 file_3

./dir2:
total 8
-rw-r--r-- 1 root root 5  76 23:58 file_1
-rw-r--r-- 1 root root 5  76 23:58 file_2

-Sオプション

  • ファイルサイズでソート(大きい順)
root@c5776e759f48:/dir_1/dir1# ls -lS
total 12
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root  15  77 00:07 file_3
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root   5  76 23:57 file_1

-tオプション

  • 更新時刻でソート(新しい順)
root@c5776e759f48:/dir_1/dir1# ls -lt
total 12
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root  15  77 00:07 file_3
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root   5  76 23:57 file_1

-1オプション

  • 1行に1ファイルずつ表示
root@c5776e759f48:/dir_1/dir1# ls -1
dir2
file_1
file_2
file_3
// オプションなしと比べると分かりやすい

--full-timeオプション

  • 完全なタイムスタンプを表示
root@c5776e759f48:/dir_1/dir1# ls --full-time
total 12
drwxr-xr-x 4 root root 128 2024-07-06 23:58:08.000000000 +0900 dir2
-rw-r--r-- 1 root root   5 2024-07-06 23:57:22.312116679 +0900 file_1
-rw-r--r-- 1 root root   9 2024-07-07 00:08:02.715598000 +0900 file_2
-rw-r--r-- 1 root root  15 2024-07-07 00:07:49.788166000 +0900 file_3

組み合わせオプション

-d --full-time

  • ディレクトリの完全なタイムスタンプを表示
root@c5776e759f48:/dir_1/dir1# ls -d --full-time dir2
drwxr-xr-x 4 root root 128 2024-07-06 23:58:08.000000000 +0900 dir2

-lSh

  • 詳細情報 + ファイルサイズ大きい順 + 分かりやすいファイルサイズを表示
root@c5776e759f48:/dir_1/dir1# ls -lSh
total 12K
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root  15  77 00:07 file_3
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root   5  76 23:57 file_1

-ltr

  • 詳細情報 + 更新日時古い順を表示
root@c5776e759f48:/dir_1/dir1# ls -ltr
total 12
-rw-r--r-- 1 root root   5  76 23:57 file_1
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root  15  77 00:07 file_3
-rw-r--r-- 1 root root   9  77 00:08 file_2
// 更新日時新しい順 + 逆順

-1tr

  • 1行に1ファイルずつ、更新時刻の古い順を表示
root@c5776e759f48:/dir_1/dir1# ls -1tr
file_1
dir2
file_3
file_2

-ltrs

  • 詳細 + 更新時刻の古い順 + ファイルサイズの大きい順を表示
root@c5776e759f48:/dir_1/dir1# ls -ltrs
total 12
4 -rw-r--r-- 1 root root   5  76 23:57 file_1
0 drwxr-xr-x 4 root root 128  76 23:58 dir2
4 -rw-r--r-- 1 root root  15  77 00:07 file_3
4 -rw-r--r-- 1 root root   9  77 00:08 file_2
// -tr > -sになっている

-ltR

  • 詳細 + 更新日時新しい順 + 再帰的を表示
root@c5776e759f48:/dir_1/dir1# ls -ltR
.:
total 12
-rw-r--r-- 1 root root   9  77 00:08 file_2
-rw-r--r-- 1 root root  15  77 00:07 file_3
drwxr-xr-x 4 root root 128  76 23:58 dir2
-rw-r--r-- 1 root root   5  76 23:57 file_1

./dir2:
total 8
-rw-r--r-- 1 root root 5  76 23:58 file_2
-rw-r--r-- 1 root root 5  76 23:58 file_1

まとめ

普段は-lオプションのみでも十分な気がしますが、以下の場合などには他のオプションを組み合わせて使うとより他の人から見ても分かりやすく確認ができると思いました。

  • 複数のファイルがある際、ディレクトリの中身も全部確認したいとき(-Rオプション)
  • 複数のファイルがある際、更新日時の古いものを確認したい or 新しいものを確認したいとき(-tオプション)(サイズも然り)
  • Bじゃ分かりにくいため、KBやMBで表示させたいとき(-hオプション)

最後までお読みいただき、ありがとうございました!

Discussion