Linuxコマンド「ls」
lsコマンドとは
lsコマンドはディレクトリにあるコンテンツの情報を表示するコマンドである。なにもオプションを付けずに指定すると、現在位置にあるファイルとフォルダの名前をリストで表示する。
ls
backup dir file2.txt file4.txt
delete file1.txt file3.txt file5.txt
基本的な構文
lsコマンドの基本的なコマンドは以下の通りである。ディレクトリおよびファイルに一致するファイルの情報を表示する。
ls [オプション] [ディレクトリおよびファイル ...]
大きく以下の4点をオプションで指定する。
- どのディレクトリを表示するか
- どのファイルを表示するか
- どのような並び順で表示するか
- どのような形式で表示するか
表示するディレクトリの指定
以下のディレクトリ構造の場合に、lsコマンドで表示するディレクトリを指定する例を示す。
tree
.
├── .secret
├── backup~
├── dir1
│ ├── command.sh
│ ├── dirA
│ │ └── file3.txt
│ ├── dirB
│ ├── file1.txt
│ └── file2.txt
├── dir2
│ └── file6.txt
├── dirText
├── file4.txt
├── file5.txt
└── program.sh
何も指定しない場合、カレントディレクトリの全ての通常ファイル・ディレクトリを出力する。
ls
backup~ dir1 dir2 file4.txt program.sh
ディレクトリを指定すると、そのディレクトリのファイル・ディレクトリを出力する。
ls dir1
command.sh dirA dirB file1.txt file2.txt
なお、シェル形式のワイルドカードが使用できる。
複数のディレクトリ
複数のディレクトリが指定された場合、ディレクトリごとに情報が表示される。
ls dir1 dir*
dirText # dir*で引っかかったカレントディレクトリにあるコンテンツ
dir1: # dir1のコンテンツ
command.sh dirA dirB file1.txt file2.txt
dir1: # dir*で引っかかったdir1のコンテンツ
command.sh dirA dirB file1.txt file2.txt
dir2: # dir*で引っかかったdir2のコンテンツ
file6.txt
ディレクトリの表示
ディレクトリのコンテンツではなく、ディレクトリを表示するには-d
または--directory
オプションを使う。
表示するファイルの指定
名前の指定
ディレクトリと同様にファイルを指定すると、そのファイルの情報を出力する。こちらもシェル形式のワイルドカードが使用できる。
ls file4.txt
file4.txt
ls nofile.txt
ls: cannot access 'nofile.txt': No such file or directory
特定のディレクトリにある特定のファイルの情報を表示する例を示す。
ls dir?/file*
dir1/file1.txt dir1/file2.txt dir2/file6.txt
名前の除外
-Iオプションを使用すると名前がパターンに一致するものを除外できる。
ls
backup~ dir1 dir2 dirText file4.txt file5.txt program.sh
ls -I '*file*'
backup~ dir1 dir2 dirText program.sh
ls -I \*file\*
backup~ dir1 dir2 dirText program.sh
ただし、名前の指定と併用する場合、名前の指定に一致したものを除外する動作とはならない。あくまで、ディレクトリ名が指定されその配下のアイテムを全て表示するときに、名前の除外が適用される。以下は末尾が1のものを除外することを想定したlsコマンドの実行例である。dir1はディレクトリ名のみ指定しており、dir2はディレクトリ名に加えて名前として*を指定している。dir1/file1-1は除外されているが、dir2/file2-1は除外されていない。
tree
.
├── dir1
│ ├── file1-1
│ └── file1-2
└── dir2
├── file2-1
└── file2-2
ls -I '*1' dir1 dir2/*
dir2/file2-1 dir2/file2-2
dir1:
file1-2
特殊なファイルの表示
隠しファイルなどの表示に関するオプションを示す。実行例は.secret、backup~、command.sh、normalという名前のファイルがあるディレクトリでコマンドを実行した結果である。
オプション | 意味 | 実行例 |
---|---|---|
オプションなし(デフォルト) | .で始まるファイルを表示しない | backup~ command.sh normal |
-a --all | .で始まる隠しファイルを表示する .(カレントディレクトリ)、..(親ディレクトリ)も含む | . .. .secret backup~ command.sh normal |
-A --almost-all | .で始まる隠しファイルを表示する .(カレントディレクトリ)、..(親ディレクトリ)は含まない | .secret backup~ command.sh normal |
-B --ignore-backups | ~で終わるバックアップファイルを表示しない | command.sh normal |
再帰探索
デフォルトでは指定されたディレクトリ直下のみを表示する。-R (--recursive)オプションを付けると、再帰的に配下の全てのファイルを表示する。
ls -R
.:
backup~ dir1 dir2 dirText file4.txt file5.txt program.sh
./dir1:
command.sh dirA dirB file1.txt file2.txt
./dir1/dirA:
file3.txt
./dir1/dirB:
./dir2:
file6.txt
並び順の指定
コンテンツの表示順を指定するオプションを示す。デフォルトでは名前昇順である。
分類 | オプション | 表示順 |
---|---|---|
名前 | (デフォルト) | 名前昇順 |
拡張子 | -X | 拡張子昇順 |
時刻 | -t | 時刻が新しい順にする 使用する時刻のデフォルトは最終更新日時だが、 --time で変更可能 |
--time=key | キーとして使用する日時の種類を指定 ・最終アクセス日時 atime、access、use ・最終変更日時 ctime、status ・最終更新日時 mtime,、odification ・作成日時 birth、creation | |
-u | 他のオプションとの組み合わせにより動作が変わる。-ltu のとき・リストで表示する時刻にatime(アクセス時刻)を使う ・atimeが新しい順にする -lu のとき・リストで表示する時刻にatime(アクセス時刻)を使う -l と併用しない場合・atimeが新しい順にする | |
-c | 他のオプションとの組み合わせにより動作が変わる。-ltc のとき・リストで表示する時刻にctime(変更時刻)を使う ・ctimeが新しい順にする -lc のとき・リストで表示する時刻にctime(変更時刻)を使う -l と併用しない場合・ctimeが新しい順にする | |
ディレクトリ | --group-directories-first | ディレクトリが先、ファイルが後 |
その他 | -U | ソートしない (ファイルシステム上の順番) |
-r | キーの並び順を逆順にする | |
-v | キーの並び替えでナチュラルソートを使う | |
総合 | --sort=WORD | 指定のキーでソート none (ソートしない、 -U と等しい)size (サイズ、 -S と等しい)time (時刻、 -t と等しい)version (ナチュラルソート、 -v と等しい)extension (拡張子、 -X と等しい)width (名前の文字数) |
ナチュラルソートの例
ファイル名をナチュラルソートで並び替える例を示す。
ls
(out)file1.10.4.txt file1.5.2.txt file100.txt file9.txt
ls -v
(out)file1.5.2.txt file1.10.4.txt file9.txt file100.txt
続いて、拡張子をナチュラルソートで並び替える例を示す。
ls
(out)file.10 file.100 file.5 file.9
ls -vx
(out)file.5 file.9 file.10 file.100
ls --sort=extension --sort=version
(out)file.5 file.9 file.10 file.100
表示形式の指定
主な表示形式を以下に示す。
表示形式 | 意味 | オプション | 例 |
---|---|---|---|
vertical | 縦に並べる(デフォルト) | -C | file1 file4 file7 |
across horizontal | 横に並べる | -x | file1 file2 file3 |
single-column | 行区切り | -1 | file1 |
commas | コンマ区切り | -m | file1, file2, file3, |
long verbose | リスト | -l | -rw-r--r-- 1 user user 114 Feb 28 20:18 file1 |
表中に示したオプション以外に--format=表示形式
という指定もできる。
ls -m
(out)backup~, dir1, dir2, dirText, file4.txt, file5.txt, program.sh
ls --format=commas
(out)backup~, dir1, dir2, dirText, file4.txt, file5.txt, program.sh
デフォルトの表示形式
デフォルトでは名前だけが縦に表示されるvertical形式である。コンソール幅で折り返しされるように列数が調節される。折り返し幅をwオプションで指定できる。
ls
(out)backup~ dir1 dir2 dirText file4.txt file5.txt program.sh
ls -w 50
(out)backup~ dir2 file4.txt program.sh
(out)dir1 dirText file5.txt
ただし、lsコマンドの出力結果をパイプで他のコマンドへ渡す場合、1つずつ改行コードで区切られて渡されるsingle-column形式となる。
ls | hexdump -C
00000000 62 61 63 6b 75 70 7e 0a 64 69 72 31 0a 64 69 72 |backup~.dir1.dir|
00000010 32 0a 64 69 72 54 65 78 74 0a 66 69 6c 65 34 2e |2.dirText.file4.|
00000020 74 78 74 0a 66 69 6c 65 35 2e 74 78 74 0a 70 72 |txt.file5.txt.pr|
00000030 6f 67 72 61 6d 2e 73 68 0a |ogram.sh.|
00000039
リスト表示のカスタマイズ
リスト表示ではパーミッション、リンクの数、所有者名、所有グループ名、サイズ、更新日時(mtime)、名前の順に表示される。表示内容はカスタマイズ可能である。
分類 | コマンド | 意味 | 実行例 |
---|---|---|---|
サイズ | -h --human-readable | 単位付きでサイズを表示する | -rw-r--r-- 1 user user 9.8K Feb 28 20:04 file4.txt |
--si | SI接頭辞に準拠(10^3=k、10^6=M、...)する ※本オプションのみで可読性が高い状態になる | -rw-r--r-- 1 user user 10K Feb 28 20:04 file4.txt | |
--block=SIZE | 独自のサイズ単位(ブロック)を使う ※単位としてSI接頭辞(K、M、...)または2進接頭辞(KB、MB、...)が使用可能 ※10KBのような指定も可能 ※ブロックは小数点切り上げとなる | block=128のとき-rw-r--r-- 1 user user 79 Feb 28 20:04 file4.txt block=Mのとき -rw-r--r-- 1 user user 1M Feb 28 20:04 file4.txt | |
-s | ブロック割り当てサイズを表示する | ||
時刻 | --time-style=FORMAT | 時刻形式を指定する ※ long-iso : yyyy-mm-dd HH:MM | -rw-r--r-- 1 user user 1M 2025-02-28 20:04 file4.txt |
所有者 | -n | uid/gidで表示する | -rw-r--r-- 1 1000 1000 9.8K Feb 28 20:04 file4.txt |
-G | 所有グループを表示しない | -rw-r--r-- 1 user 9.8K Feb 28 20:04 file4.txt | |
分類 | -F | 分類を示すインジケータを付ける* 実行可能ファイル/ ディレクトリ@ シンボリックリンク | drwxr-xr-x 2 user user 4096 Feb 28 20:24 dir2/ -rwxr----- 1 user user 1431 Feb 28 20:06 program.sh* |
他の表示形式のカスタマイズ
本表で示したオプションの一部はリスト表示でなくても使用できる。