ディレクトリの中のファイル一覧を出力するコマンド。
Windowsでいうところのdir
コマンド。
ディレクトリを再帰的にたどって表示したい場合はfind
コマンドを使う。
JavaやRubyなどの中でファイル一覧を取得する方法はディレクトリの中のファイル一覧を取得する方法参照。
CentOSだと以下のようにalias設定されているかも。
alias ll='ls -l --color=auto' 2>/dev/nullalias l.='ls -d .* --color=auto' 2>/dev/nullalias ls='ls --color=auto' 2>/dev/null
Coreutilsというパッケージに入っているので、CentOSにもUbuntuにも始めから入っている。
-a
-C
ls
は標準出力が端末の場合にはこれがデフォルト。標準出力がパイプの場合には、デフォルトでは1ファイル1行で縦に並べて出力されるが、このオプションをつけると端末の場合と同様に横に並べてくれる。逆に標準出力が端末であっても1ファイル1行にしたい場合は-1
を付ける。-d
-f
-l
やソートのオプションとの両立ができないみたい。find
コマンドでは、デフォルトでソートされない。-F
@
: シンボリックリンク(-l
を付けていると表示されないかもしれない)、/
: ディレクトリ、*
: 実行可能ファイル、|
: 名前付きパイプ。-g
-l
とよく似ているが、ファイルオーナーのグループ名を表示しない。-g
をつければ-l
は付けても付けなくてもおなじになる。-h
,--human-readable
-l
や-g
オプションをと受けたときのファイルサイズの表示を、K
,M
などの単位を付けて人間が読みやすいように表示。--help
-i
-l
-r
-t
と併用するとタイムスタンプの古い順。-R
,--recursive
-s
-S
-t
--version
-1
(イチ)-C
の反対で、標準出力が端末であっても1ファイルを1行で縦に並べて出力する。--
というパラメータを渡すとそれ以降のパラメータをオプションではなくファイル名やディレクトリ名とみなしてくれるので、-
で始まる名前を扱いたい場合に使うとよい。
--full-time
というオプションでファイルの更新時刻を秒まで表示してくれる。
$ ls --full-time
この場合、-l
はあってもなくても同じ。
YYYY-MM-DD hh:mm:ss
のフォーマットで表示するには2017/01/18$ ls -l --time-style="+%Y-%m-%d %H:%M:%S"
date
コマンドでの指定のしかたと似ているかも。
find
コマンドの場合
find . -printf "%M %n %u %g %k %TY-%Tm-%Td %TH:%TM:%TS %p\n"
$ ls -lt
とすればよい。古い順にするには
$ ls -ltr
とする。
秒まで表示するには
$ ls -t --full-time
または
$ ls -tr --full-time
とする。
-t
というオプションを知らなかったときは以下の方法を使っていた。
$ ls -alF --time-style="+%Y-%m-%d %H:%M:%S" | sort -r -k6,7
逆に古い順にソートするには
$ ls -alF --time-style="+%Y-%m-%d %H:%M:%S" | sort -k6,7
ディレクトリを階層的にたどってすべてのファイルを新しい順に並べるにはls
コマンドでなく、find
コマンドを使う。