意外と忘れる「lsコマンド」での「ファイルソート指定」と「隠しファイル表示」

割とよく使うけどよく忘れるlsコマンドでのオプション

・隠しファイル表示

・ファイルのソート(「作成日時」「最終参照日時」「最終ステータス変更日時」)

をメモがてらに書いていきます。

スポンサーリンク

今回の環境

例として「pry-rails」というGemのディレクトリを使用します。
こちらのディレクトリに新しく「exmaple.rb」という空ファイルを生成した状態を今回の初期状態とします。

まずは -l  オプションを付けて詳細情報を見るとこんな感じ(並び順はファイル名の降順)

$ ls -l
total 48
-rw-r--r--   1 user  staff    94  6  4 18:16 Gemfile
-rw-r--r--   1 user  staff  1059  6  4 18:16 LICENCE
-rw-r--r--   1 user  staff  1037  6  4 18:16 Rakefile
-rw-r--r--   1 user  staff  3609  6  4 18:16 Readme.md
-rw-r--r--   1 user  staff     0  6  4 18:46 example.rb
drwxr-xr-x   4 user  staff   128  6  4 18:16 lib
-rw-r--r--   1 user  staff   901  6  4 18:16 pry-rails.gemspec
drwxr-xr-x  26 user  staff   832  6  4 18:16 scenarios
-rw-r--r--   1 user  staff   501  6  4 18:16 scenarios.yml
drwxr-xr-x  11 user  staff   352  6  4 18:16 spec

作成日時

ls -lt

「作成日時」でソートしてみます。
降順なので先程作成した「example.rb」 が一番上になっているのが分かりますね。

$ ls -lt
total 48
-rw-r--r--   1 user  staff     0  6  4 18:46 example.rb
drwxr-xr-x  11 user  staff   352  6  4 18:16 spec
drwxr-xr-x  26 user  staff   832  6  4 18:16 scenarios
-rw-r--r--   1 user  staff   501  6  4 18:16 scenarios.yml
-rw-r--r--   1 user  staff   901  6  4 18:16 pry-rails.gemspec
drwxr-xr-x   4 user  staff   128  6  4 18:16 lib
-rw-r--r--   1 user  staff  3609  6  4 18:16 Readme.md
-rw-r--r--   1 user  staff  1037  6  4 18:16 Rakefile
-rw-r--r--   1 user  staff  1059  6  4 18:16 LICENCE
-rw-r--r--   1 user  staff    94  6  4 18:16 Gemfile

最終参照日時

ls -lu

「最終参照日時」を表示。まずは -u オプションを付けて表示だけのコマンド紹介。
これだけでは最終参照日時でソートはされないことに注意

ls -ltu

最終参照日時でソートする。オプションに t  を追加。

$ ls -ltu
total 48
-rw-r--r--   1 administrator  staff  1059  6  4 18:49 LICENCE
-rw-r--r--   1 administrator  staff    94  6  4 18:49 Gemfile
-rw-r--r--   1 administrator  staff  1037  6  4 18:49 Rakefile
-rw-r--r--   1 administrator  staff  3609  6  4 18:49 Readme.md
-rw-r--r--   1 administrator  staff   501  6  4 18:49 scenarios.yml
-rw-r--r--   1 administrator  staff   901  6  4 18:49 pry-rails.gemspec
-rw-r--r--   1 administrator  staff     0  6  4 18:46 example.rb
drwxr-xr-x  11 administrator  staff   352  6  4 18:16 spec
drwxr-xr-x  26 administrator  staff   832  6  4 18:16 scenarios
drwxr-xr-x   4 administrator  staff   128  6  4 18:16 lib

今回の環境はgitの管理下にあるディレクトリであり、差分チェックをプロンプト実行ごとに行行っているため、「新規作成したファイル以外」が必ず最新の時間で参照されている。

参考

Linuxコマンド、ls -ltuにてatimeの降順でソートに関して / teratail

最終ステータス変更日時

ls -cl

「最終ステータス変更日時」を表示。まずは -c を付けて表示だけのコマンド紹介。
これだけでは最終ステータス変更日時でソートはされない

ちなみに最終ステータス変更日時とは → (所有者変更やパーミッション変更などなど)

ls -clt

最終ステータス変更日時でソートする。オプションに t を追加。

変更で一番新しいのが「example.rb」の作成なので、これが一番上にソートされている。

$ ls -clt
total 48
-rw-r--r--   1 administrator  staff     0  6  4 18:46 example.rb
drwxr-xr-x  11 administrator  staff   352  6  4 18:16 spec
drwxr-xr-x  26 administrator  staff   832  6  4 18:16 scenarios
-rw-r--r--   1 administrator  staff   501  6  4 18:16 scenarios.yml
-rw-r--r--   1 administrator  staff   901  6  4 18:16 pry-rails.gemspec
drwxr-xr-x   4 administrator  staff   128  6  4 18:16 lib
-rw-r--r--   1 administrator  staff  3609  6  4 18:16 Readme.md
-rw-r--r--   1 administrator  staff  1037  6  4 18:16 Rakefile
-rw-r--r--   1 administrator  staff  1059  6  4 18:16 LICENCE
-rw-r--r--   1 administrator  staff    94  6  4 18:16 Gemfile

隠しファイル表示

ls -la

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

「.」で始まる隠しファイル「.gitignore」が表示されているのが分かる。

$ ls -la
total 56
drwxr-xr-x  13 user  staff   416  6  4 18:16 .
drwxr-xr-x   4 user  staff   128  6  4 18:16 ..
drwxr-xr-x  12 user  staff   384  6  4 18:16 .git
-rw-r--r--   1 user  staff    68  6  4 18:16 .gitignore
-rw-r--r--   1 user  staff    94  6  4 18:16 Gemfile
-rw-r--r--   1 user  staff  1059  6  4 18:16 LICENCE
-rw-r--r--   1 user  staff  1037  6  4 18:16 Rakefile
-rw-r--r--   1 user  staff  3609  6  4 18:16 Readme.md
drwxr-xr-x   4 user  staff   128  6  4 18:16 lib
-rw-r--r--   1 user  staff   901  6  4 18:16 pry-rails.gemspec
drwxr-xr-x  26 user  staff   832  6  4 18:16 scenarios
-rw-r--r--   1 user  staff   501  6  4 18:16 scenarios.yml
drwxr-xr-x  11 user  staff   352  6  4 18:16 spec

おまけ(昇順のソート)

ソートはデフォルトでは降順なので昇順にしたい場合は -r を付ける

$ ls -lrt
total 48
-rw-r--r--   1 user  staff    94  6  4 18:16 Gemfile
-rw-r--r--   1 user  staff  1059  6  4 18:16 LICENCE
-rw-r--r--   1 user  staff  1037  6  4 18:16 Rakefile
-rw-r--r--   1 user  staff  3609  6  4 18:16 Readme.md
drwxr-xr-x   4 user  staff   128  6  4 18:16 lib
-rw-r--r--   1 user  staff   901  6  4 18:16 pry-rails.gemspec
-rw-r--r--   1 user  staff   501  6  4 18:16 scenarios.yml
drwxr-xr-x  26 user  staff   832  6  4 18:16 scenarios
drwxr-xr-x  11 user  staff   352  6  4 18:16 spec
-rw-r--r--   1 user  staff     0  6  4 18:46 example.rb