ls コマンドのオプション解説、並び替えや便利な表示方法など

ls コマンドのオプション解説、並び替えや便利な表示方法など サーバー設定

ls コマンドのオプションを解説します。
各オプションを活用することで、様々な情報を確認・取得可能です。

なお、今回オプションを確認した ls コマンドは以下のバージョンです。

$ ls --version
ls (GNU coreutils) 8.22



ls コマンドでファイル一覧を確認する

何もオプションを指定せずに ls コマンドを実行すると、
今いるディレクトリ内のファイルを一覧で確認できます。

$ ls
arch  ausyscall  dracut  fugadir  hogedir  journalctl  krb5-config  objcopy

隠しファイルも含めて全て表示する

隠しファイルも含めて表示する場合は ls -a を実行します。
カレントディレクトリ・親ディレクトリの情報が不要な場合は ls -A がオススメです。

$ ls -A
.hidden  arch  ausyscall  dracut  fugadir  hogedir  journalctl  krb5-config  objcopy

ls で縦表示を利用する

ファイル一覧を縦に並べたい場合は、ls -1 を実行します。
シェルスクリプト・エクセルなどへコピーするシーンで便利に使えます。

$ ls -1
arch
ausyscall
dracut
fugadir
hogedir
journalctl
krb5-config
objcopy

ファイル名をダブルクォートで囲む

-Q を使うと、ファイル名をダブルクォートで囲んで出力します。
シェルスクリプトや別ファイルに転記する場面で活躍するオプションです。

$ ls -1Q
"arch"
"ausyscall"
"dracut"
"fugadir"
"hogedir"
"journalctl"
"krb5-config"
"objcopy"

サイズ・日時などの詳細情報を表示する

ファイルの詳細を確認したい場合は ls -l を使います。
Linux コマンドの中でも使用頻度が高い有名なコマンドです。

$ ls -l
-rwxr-xr-x. 1 user01 user01  33168 10月 31  2018 arch
-rwxr-xr-x. 1 user01 user01  11448 10月 31  2018 ausyscall
-rwxr-xr-x. 1 user01 user01  56986 11月  3  2018 dracut
drwxrwxr-x. 2 user01 user01      6  5月 18 22:42 fugadir
drwxr-xr-x. 2 user01 user01      6  5月 18 22:41 hogedir
-rwxr-xr-x. 1 user01 user01 550880  1月 30 02:56 journalctl
-rwxr-xr-x. 1 user01 user01   7123  1月 30 02:32 krb5-config
-rwxr-xr-x. 1 user01 user01 232872 10月 30  2018 objcopy

ls で更新日時順にファイルを並べる

ファイルを更新日時順にソートする場合は ls -lt です。
上に行くほど新しく、下に行くほど古いファイルが並びます。

$ ls -lt
drwxrwxr-x. 2 user01 user01      6  5月 18 22:42 fugadir
drwxr-xr-x. 2 user01 user01      6  5月 18 22:41 hogedir
-rwxr-xr-x. 1 user01 user01 550880  1月 30 02:56 journalctl
-rwxr-xr-x. 1 user01 user01   7123  1月 30 02:32 krb5-config
-rwxr-xr-x. 1 user01 user01  56986 11月  3  2018 dracut
-rwxr-xr-x. 1 user01 user01  11448 10月 31  2018 ausyscall
-rwxr-xr-x. 1 user01 user01  33168 10月 31  2018 arch
-rwxr-xr-x. 1 user01 user01 232872 10月 30  2018 objcopy

逆に、古いファイルを上に・新しいファイルを下にしたい場合は、
ls -ltr コマンドで並べ替え可能です。

$ ls -ltr
-rwxr-xr-x. 1 user01 user01 232872 10月 30  2018 objcopy
-rwxr-xr-x. 1 user01 user01  33168 10月 31  2018 arch
-rwxr-xr-x. 1 user01 user01  11448 10月 31  2018 ausyscall
-rwxr-xr-x. 1 user01 user01  56986 11月  3  2018 dracut
-rwxr-xr-x. 1 user01 user01   7123  1月 30 02:32 krb5-config
-rwxr-xr-x. 1 user01 user01 550880  1月 30 02:56 journalctl
drwxr-xr-x. 2 user01 user01      6  5月 18 22:41 hogedir
drwxrwxr-x. 2 user01 user01      6  5月 18 22:42 fugadir

ファイルサイズを読みやすくする

ls -lh コマンドを使用すると、
サイズをバイト単位ではなくキロバイトやメガバイト単位で表示してくれます。

$ ls -lh
-rwxr-xr-x. 1 user01 user01  33K 10月 31  2018 arch
-rwxr-xr-x. 1 user01 user01  12K 10月 31  2018 ausyscall
-rwxr-xr-x. 1 user01 user01  56K 11月  3  2018 dracut
drwxrwxr-x. 2 user01 user01    6  5月 18 22:42 fugadir
drwxr-xr-x. 2 user01 user01    6  5月 18 22:41 hogedir
-rwxr-xr-x. 1 user01 user01 538K  1月 30 02:56 journalctl
-rwxr-xr-x. 1 user01 user01 7.0K  1月 30 02:32 krb5-config
-rwxr-xr-x. 1 user01 user01 228K 10月 30  2018 objcopy

ファイルサイズの順に並べる

ls -lS コマンドを実行すると、ファイルサイズが大きな順に並びます。
大きなファイルが上に、小さなファイルが上に表示されます。

$ ls -lS
-rwxr-xr-x. 1 user01 user01 550880  1月 30 02:56 journalctl
-rwxr-xr-x. 1 user01 user01 232872 10月 30  2018 objcopy
-rwxr-xr-x. 1 user01 user01  56986 11月  3  2018 dracut
-rwxr-xr-x. 1 user01 user01  33168 10月 31  2018 arch
-rwxr-xr-x. 1 user01 user01  11448 10月 31  2018 ausyscall
-rwxr-xr-x. 1 user01 user01   7123  1月 30 02:32 krb5-config
drwxrwxr-x. 2 user01 user01      6  5月 18 22:42 fugadir
drwxr-xr-x. 2 user01 user01      6  5月 18 22:41 hogedir

表示順を逆にしたい場合は、-r オプションを利用します。
ls -lSr で、ファイルサイズの小さな順にソートされます。

$ ls -lSr
drwxr-xr-x. 2 user01 user01      6  5月 18 22:41 hogedir
drwxrwxr-x. 2 user01 user01      6  5月 18 22:42 fugadir
-rwxr-xr-x. 1 user01 user01   7123  1月 30 02:32 krb5-config
-rwxr-xr-x. 1 user01 user01  11448 10月 31  2018 ausyscall
-rwxr-xr-x. 1 user01 user01  33168 10月 31  2018 arch
-rwxr-xr-x. 1 user01 user01  56986 11月  3  2018 dracut
-rwxr-xr-x. 1 user01 user01 232872 10月 30  2018 objcopy
-rwxr-xr-x. 1 user01 user01 550880  1月 30 02:56 journalctl

ls で拡張子順に表示する

-X オプションを指定することで、拡張子順に並べることができます。
以下の例では ls -lX コマンドを実行しています。

$ ls -lX
-rw-rw-r--.  1 user01 user01  537  1月 27 23:26 webpack.mix.js
-rw-rw-r--.  1 user01 user01 1631  2月 24 17:34 composer.json
-rw-rw-r--.  1 user01 user01 1125  1月 27 23:26 package.json
-rw-rw-r--.  1 user01 user01 1695  4月 13 01:55 readme.md
-rw-rw-r--.  1 user01 user01  563  1月 27 23:26 manual.md
-rw-rw-r--.  1 user01 user01 1138  1月 27 23:26 phpunit.xml

サブディレクトリの中身も表示する

サブディレクトリのファイルも同時に確認する場合は、-R を使用します。
複数のディレクトリがあれば全て表示されます。

$ ls -lR
.:
-rwxr-xr-x. 1 user01 user01  33168 10月 31  2018 arch
-rwxr-xr-x. 1 user01 user01  11448 10月 31  2018 ausyscall
-rwxr-xr-x. 1 user01 user01  56986 11月  3  2018 dracut
drwxrwxr-x. 2 user01 user01     24  5月 18 23:21 fugadir
drwxr-xr-x. 2 user01 user01     42  5月 18 23:20 hogedir
-rwxr-xr-x. 1 user01 user01 550880  1月 30 02:56 journalctl
-rwxr-xr-x. 1 user01 user01   7123  1月 30 02:32 krb5-config
-rwxr-xr-x. 1 user01 user01 232872 10月 30  2018 objcopy

./fugadir:
-rw-rw-r--. 1 user01 user01 0  5月 18 23:21 fugafile01

./hogedir:
-rw-rw-r--. 1 user01 user01 0  5月 18 23:20 hogefile01
-rw-rw-r--. 1 user01 user01 0  5月 18 23:20 hogefile02

ls でファイルの作成時刻を表示する

--full-time オプションでは、ファイルの作成時刻を絶対表記で出力します。
正確な時刻を秒単位まで確認することが可能です。

$ ls --full-time
合計 880
-rwxr-xr-x. 1 user01 user01  33168 2018-10-31 04:16:01.000000000 +0900 arch
-rwxr-xr-x. 1 user01 user01  11448 2018-10-31 05:42:55.000000000 +0900 ausyscall
-rwxr-xr-x. 1 user01 user01  56986 2018-11-03 02:40:52.000000000 +0900 dracut
drwxrwxr-x. 2 user01 user01     24 2019-05-18 23:21:13.658409249 +0900 fugadir
drwxr-xr-x. 2 user01 user01     42 2019-05-18 23:20:56.453023353 +0900 hogedir
-rwxr-xr-x. 1 user01 user01 550880 2019-01-30 02:56:52.000000000 +0900 journalctl
-rwxr-xr-x. 1 user01 user01   7123 2019-01-30 02:32:24.000000000 +0900 krb5-config
-rwxr-xr-x. 1 user01 user01 232872 2018-10-30 18:55:44.000000000 +0900 objcopy

ファイルの inode 番号を確認する

-i オプションを利用すると、inode(アイノード) 番号を確認できます。
ファイルの属性情報を管理するために、ファイルシステム内部で使われている番号です。

$ ls -li
合計 880
17997702 -rwxr-xr-x. 1 user01 user01  33168 10月 31  2018 arch
17997703 -rwxr-xr-x. 1 user01 user01  11448 10月 31  2018 ausyscall
17255639 -rwxr-xr-x. 1 user01 user01  56986 11月  3  2018 dracut
  737547 drwxrwxr-x. 2 user01 user01     24  5月 18 23:21 fugadir
52072419 drwxr-xr-x. 2 user01 user01     42  5月 18 23:20 hogedir
17255686 -rwxr-xr-x. 1 user01 user01 550880  1月 30 02:56 journalctl
17255688 -rwxr-xr-x. 1 user01 user01   7123  1月 30 02:32 krb5-config
17255738 -rwxr-xr-x. 1 user01 user01 232872 10月 30  2018 objcopy

サブディレクトリだけを表示する(おまけ)

同じディレクトリ内に存在するサブディレクトリだけを表示する方法です。
ls コマンドだけでは実現できないため、grep を組み合わせて実現します。

$ ls -l | grep ^d
drwxrwxr-x. 2 user01 user01     24  5月 18 23:21 fugadir
drwxr-xr-x. 2 user01 user01     42  5月 18 23:20 hogedir

まとめ

ls コマンドの様々なオプションを紹介しました。
オプションを活用することで、必要な情報を簡単に取得できます。

基本的なオプションは ls --help で確認できますが、
よく使うオプションは頭に入れておくことをオススメします。

【関連記事】
curl コマンドのオプション解説
jq コマンドで JSON を加工する
jq コマンド応用編
MySQL のクエリ結果を整形する
Apache アクセスログの解析コマンド
CentOS が重いときの確認コマンド
CentOS のサービス一覧を確認する
file, strings, zipinfo でファイルを調査する