Linuxで作業をおこなう上では、lsコマンドは必須のコマンドになります。
使わない人はいないでしょう。
しかし、「-l」とか「-a」といった超メジャーなオプションのみを使っており、便利なオプションを使いこなしていない人が多いように思います。
今回は、lsコマンドのオプションについて、知っていればちょっと便利なオプションについて紹介していきます。
そもそもですが、lsは「ListSegment」の略です。
日本語では、”セグメントをリスト表示する”でしょうか。
lsコマンドだけ実行すると、カレントディレクトリに存在するファイルやフォルダの一覧を表示します。
$ ls
aaa.txt folder
q
カレントディレクトリではなく、一覧を表示したいフォルダを指定すれば、指定したフォルダ配下の一覧を表示します。
$ ls ./folder/
folder2 xyz.txt
以下から各オプションについて説明していくのですが、オプションを複数指定したい場合は、ハイフン(-)の後に使用したいオプションを連続して指定すればよいです。
「-l」と「-a」オプションを同時に使用したい場合は、「ls -la」と記述する、といった感じです。
全部表示する(-a,-A)
全てのファイルを表示する場合は「-a」オプションです。
もしくは「-all」。
通常は表示されない、先頭にピリオド「.」が付くファイルも表示します。
カレントを表現する「.」と、一つ上階層を表現する「..」も表示します。
$ ls -a
. .. .env.sh aaa.txt folder
小文字の「a」ではなく大文字の「A」を使用すると、「.」「..」は除外された形で表示されます。
もしくは「–almost-all」。
$ ls -A
.env.sh aaa.txt folder
バックアップファイルを表示しない(-B)
linuxが生成するバックアップファイルには、末尾に”~”(チルダ)が付きます。
このバックアップをファイルを表示したくない場合は「-B」オプションを使用します。
もしくは「–ignore-backups」。
1.「-B」を付けない場合
$ ls
aaa.txt bbb.txt ccc.txt ccc.txt~ folder
2.「-B」を付けた場合
$ ls -B
aaa.txt bbb.txt ccc.txt folder
出力時の色を指定する(–color)
出力時の表示色を指定する場合は「–color[=WHEN]」を指定します。
WHENには、’auto”always”never’の3パターンが指定できます。
デフォルトは’auto’です。
1.’auto’を使用。
$ ls -l --color=auto
環境設定に定義されている色に従って、表示結果の色付けをおこないます。
環境設定に定義されている表示色は、「$ dircolors -p」で確認できます。
$ dircolors -p
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
2.’always’を使用
$ ls -l --color=always
常に色表示を有効にします。
例えば、ls の結果をパイプで繋いで絞り込んだ場合、色指定が消えてしまうときがあります。
これを防ぎます。
常に環境変数に定義されている色指定を有効にします。
3.’never’を使用
$ ls -l --color=never
色表示を行いません。
ディレクトリのみを表示する(-d)
ディレクトリのみを表示する場合は「-d」オプションです。
もしくは「–directory」。
正確には、ディレクトリのみを表示する場合は「-d」オプションを付けるだけではなく、もう一工夫が必要です。
以下のようにします。
カレントディレクト配下のディレクトリのみを表示する場合です。
$ ls -d */
folder1/ folder2/
様々なソート方法
ファイル・ディレクトリのソートについて、様々なソートをおこなうことができます。
1.ディレクトリ昇順でソート(-f)
「ディレクトリ昇順」とは、Linuxのファイルシステムが設定する順番です。
なので、ソートせずに表示していることと同等となります。
$ ls -f
. folder1 xyz.txt .. folder2
2.逆ソート(-r)
ソート順を逆にしてソートをおこないます。
「-r」もしくは「–reverse」になります。
$ ls
aaa.txt bbb.txt ccc.txt ccc.txt~ folder link
$ ls --reverse
link folder ccc.txt~ ccc.txt bbb.txt aaa.txt
3.ファイルサイズでソート(-S)
ファイルサイズの降順でソートをおこないます。
$ ls -lS
total 20
drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26 folder
lrwxrwxrwx 1 xxx yyy 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
4.更新日時でソート(-t)
更新日時の降順でソートをおこないます。
$ ls -lt
total 20
lrwxrwxrwx 1 oops.jp-sakusaku LolipopUser 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
drwxr-xr-x 4 oops.jp-sakusaku LolipopUser 4096 2020-01-05 01:26 folder
-rw-r--r-- 1 oops.jp-sakusaku LolipopUser 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 oops.jp-sakusaku LolipopUser 20 2020-01-05 00:27 ccc.txt~
-rw-r--r-- 1 oops.jp-sakusaku LolipopUser 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 oops.jp-sakusaku LolipopUser 12 2020-01-05 00:26 aaa.txt
5.アクセス日時でソート(-u)
アクセス日時の降順でソートをおこないます。
$ ls -lu
total 20
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 17:06 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 17:06 ccc.txt~
drwxr-xr-x 4 xxx yyy 4096 2020-01-12 12:02 folder
lrwxrwxrwx 1 xxx yyy 41 2020-01-12 12:02 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
6.ファイルの拡張子でソート(-X)
ファイルの拡張子でソートをおこないます。
拡張子のアルファベット順になります。
$ ls -lX
total 20
drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26 folder
lrwxrwxrwx 1 xxx yyy 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
-rw-r--r-- 1 xxx yyy 0 2020-01-12 14:19 aaa.exe
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
ファイルタイムスタンプを秒まで表示(–full-time)
通常、ファイルのタイムスタンプは分までしか表示されないですが、秒まで表示することもできます。
「–full-time」を指定します。
$ ls --full-time
total 20
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26:52.42195666 +0900 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27:28.51452186 +0900 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28:28.96779361 +0900 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27:47.82928918 +0900 ccc.txt~
drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26:07.22816214 +0900 folder
オーナーを表示しない(-g)、グループを表示しない(-G)
通常は、オーナーとグループが表示されますが、それぞれを表示しない出力も可能です。
オーナーを表示したくない場合は「-g」オプションを指定します。
$ ls -la
total 20
-rw-r--r-- 1 yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 yyy 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 yyy 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 yyy 4096 2020-01-05 01:26 folder
グループを表示したくない場合は「-G」オプションを指定します。
もしくは「–no-group」。
$ ls -lG
total 20
-rw-r--r-- 1 xxx 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx 4096 2020-01-05 01:26 folder
また、オーナーのみを表示したい場合は「-o」オプションを指定でもOKです。
$ ls -o
total 20
-rw-r--r-- 1 xxx 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx 4096 2020-01-05 01:26 folder
lrwxrwxrwx 1 xxx 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
1024の累乗ではなく100の累乗でサイズ表示する(–si)
通常、1024の累乗でファイル表示をおこないますが、1000の累乗でサイズ表示。
1.1024の累乗
$ ls -la
total 28
drwxr-xr-x 3 xxx yyy 4096 2020-01-05 00:28 .
drwx-----x 6 xxx yyy 4096 2020-01-05 00:27 ..
-rw-r--r-- 1 xxx yyy 0 2019-11-19 01:28 .env.sh
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26 folder
2.1000の累乗
$ ls -la --si
total 29k
drwxr-xr-x 3 xxx yyy 4.1k 2020-01-05 00:28 .
drwx-----x 6 xxx yyy 4.1k 2020-01-05 00:27 ..
-rw-r--r-- 1 xxx yyy 0 2019-11-19 01:28 .env.sh
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx yyy 4.1k 2020-01-05 01:26 folder
ファイルのインデックス番号を表示する(-i)
Linuxにファイルに付与しているインデックス番号を表示することができます。
「-i」もしくは「–inode」になります。
$ ls -li
total 20
25566879 -rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
25566875 -rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
25566878 -rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
25566868 -rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
25566958 drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26 folder
25559629 lrwxrwxrwx 1 xxx yyy 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
リスト形式で表示する(-l)
ファイル名のみの表示ではなく、オーナー・グループ・サイズといったファイルの属性情報を含めてリスト形式で表示します。
$ ls -l
total 20
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26 folder
lrwxrwxrwx 1 xxx yyy 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
キロバイトでファイルサイズを表示する(-k)
ファイルサイズをバイト表示ではなく、キロバイト表示します。
$ ls -lk
total 20
-rw-r--r-- 1 xxx yyy 1 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 1 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 1 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx yyy 1 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx yyy 4 2020-01-05 01:26 folder
lrwxrwxrwx 1 xxx yyy 1 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
シンボリックリンクはリンク先パスを表示しない(-L)
シンボリックリンクのリンク先パスを表示したくない場合は「-L」オプションを使用します。
$ ls -lL
total 24
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26 folder
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 link
ファイルリストをカンマ区切りで表示する(-m)
ファイルリストをカンマ区切りで表示することができます。
「-m」オプションです。
出力結果を加工する際に便利です。
$ ls -m
aaa.txt, bbb.txt, ccc.txt, ccc.txt~, folder, link
オーナーとグループを文字列ではなくID表示(-n)
オーナーとグループはID(数値)をもっています。
「-n」オプションを使用すると、ID表示をおこなうことができます。
$ ls -n
total 20
-rw-r--r-- 1 1421071 1000 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 1421071 1000 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 1421071 1000 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 1421071 1000 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 1421071 1000 4096 2020-01-05 01:26 folder
lrwxrwxrwx 1 1421071 1000 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
ダブルクォーテーションでファイル名を囲む(-Q)
ファイル名をダブルクォーテーションで囲むことができます。
「-Q」もしくは「–quote-name」になります。
$ ls -Q
"aaa.txt" "bbb.txt" "ccc.txt" "ccc.txt~" "folder" "link"
再帰的にlsコマンドを実施(-R)
lsコマンドを実施するフォルダの中に存在するフォルダに対してもlsコマンドを実行し、再帰的に結果を表示します。
「-R」もしくは「–recursive」になります。
「再帰的」に結果を表示するので、フォルダの中にフォルダ(フォルダがネスト)が存在していて、全てのファイルを一覧表示する時に便利です。
$ ls -lR
.:
total 20
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:26 aaa.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 bbb.txt
-rw-r--r-- 1 xxx yyy 12 2020-01-05 00:28 ccc.txt
-rw-r--r-- 1 xxx yyy 20 2020-01-05 00:27 ccc.txt~
drwxr-xr-x 4 xxx yyy 4096 2020-01-05 01:26 folder
lrwxrwxrwx 1 xxx yyy 41 2020-01-05 20:41 link -> /home/users/0/oops.jp-sakusaku/ls/aaa.txt
./folder:
total 8
drwxr-xr-x 2 xxx yyy 4096 2020-01-05 01:26 folder1
drwxr-xr-x 2 xxx yyy 4096 2019-11-19 01:13 folder2
-rw-r--r-- 1 xxx yyy 0 2019-11-19 01:13 xyz.txt
./folder/folder1:
total 0
./folder/folder2:
total 0
ファイル名だけを行表示(-1)
あんまり知っている人が少ないかと思いますが、ファイル名だけを表示することができます。
「-1」オプションになります。
$ ls -1
aaa.exe
aaa.txt
bbb.txt
ccc.txt
ccc.txt~
folder
link