lsコマンドの使い方:ファイル・ディレクトリ一覧表示の基本と実務での活用法

概要

ls(List)コマンドは、ディレクトリ内のファイルやサブディレクトリの一覧を表示するための基本コマンドです。

現場での重要性: ファイルの存在確認、権限チェック、タイムスタンプの確認など、あらゆる運用作業の起点となります。適切なオプションを使いこなせないと、隠しファイルの見落としや権限設定ミスによる障害を引き起こす可能性があります。逆に、lsの高度な使い方を習得することで、ファイル調査やトラブルシューティングの速度が劇的に向上します。


基本コマンド・構文

最も基本的な使い方

 ls

実行例:

$ ls
Desktop  Documents  Downloads  Pictures  Videos

現在のディレクトリにあるファイルとディレクトリが表示されます。

特定のディレクトリを指定

ls /path/to/directory

実行例:

$ ls /var/log
auth.log  kern.log  syslog  nginx  apache2

現場で必須のオプション・設定

1. ls -l:詳細情報の表示(ロングフォーマット)

ls -l

実行例:

$ ls -l
total 48
drwxr-xr-x 2 user user 4096 Jan 28 10:30 Documents
-rw-r--r-- 1 user user 1234 Jan 27 14:22 report.txt
-rwxr-xr-x 1 user user  512 Jan 26 09:15 backup.sh

実務での活用理由: ファイルの権限、所有者、サイズ、更新日時を一度に確認できるため、トラブルシューティングや権限設定の確認作業では必須です。特に本番環境でのファイル配置やデプロイ後の確認で多用します。

出力の見方:

  • 1列目:ファイルタイプと権限(-rw-r--r--など)
  • 3列目:所有者
  • 4列目:グループ
  • 5列目:ファイルサイズ(バイト)
  • 6〜8列目:更新日時
  • 9列目:ファイル名

2. ls -a:隠しファイルを含めて表示

ls -a

実行例:

$ ls -a
.  ..  .bashrc  .ssh  Documents  report.txt

実務での活用理由: .bashrc.envなどの設定ファイル、.gitディレクトリなど、隠しファイルは運用上極めて重要です。これらを見落とすと、環境変数の設定ミスやバージョン管理の問題に気づけません。

3. ls -lh:人間が読みやすいサイズ表示

ls -lh

実行例:

$ ls -lh
total 48K
drwxr-xr-x 2 user user 4.0K Jan 28 10:30 Documents
-rw-r--r-- 1 user user 1.2K Jan 27 14:22 report.txt
-rw-r--r-- 1 user user 150M Jan 26 09:15 backup.tar.gz

実務での活用理由: ディスク容量の調査やログファイルのサイズ確認時に、バイト単位ではなくK(キロバイト)、M(メガバイト)、G(ギガバイト)で表示されるため、直感的に容量を把握できます

4. ls -lt:更新日時の新しい順にソート

ls -lt

実行例:

$ ls -lt
total 48
-rw-r--r-- 1 user user 1234 Jan 28 15:30 error.log
-rw-r--r-- 1 user user 5678 Jan 27 14:22 access.log
drwxr-xr-x 2 user user 4096 Jan 26 10:30 backup

実務での活用理由: 障害調査時に最新のログファイルや更新されたファイルを素早く特定できます。ls -ltrで古い順に表示することも可能で、最新ファイルが最下部に表示されるため、長いリストでも視認性が向上します。

5. ls -R:サブディレクトリを再帰的に表示

ls -R

実行例:

$ ls -R
.:
Documents  Scripts

./Documents:
report.txt  notes.md

./Scripts:
backup.sh  deploy.sh

実務での活用理由: ディレクトリ構造全体を把握したい場合に有効です。ただし、大規模なディレクトリでは出力が膨大になるため、treeコマンドと併用することを推奨します。


実践的なユースケース(逆引きレシピ)

ケース1:特定の拡張子のファイルのみを表示

ログファイル(.log)のみを表示したい場合:

ls -lh *.log

実行例:

$ ls -lh *.log
-rw-r--r-- 1 user user 12M Jan 28 15:30 error.log
-rw-r--r-- 1 user user 8.5M Jan 27 14:22 access.log

ケース2:最新の5ファイルのみを表示

更新日時が新しい順に上位5件を取得:

ls -lt | head -n 6

実行例:

$ ls -lt | head -n 6
total 48
-rw-r--r-- 1 user user 1234 Jan 28 15:30 error.log
-rw-r--r-- 1 user user 5678 Jan 27 14:22 access.log
-rw-r--r-- 1 user user  512 Jan 26 10:30 backup.sh
-rw-r--r-- 1 user user 2048 Jan 25 09:15 config.yml
-rw-r--r-- 1 user user  768 Jan 24 08:00 deploy.sh

head -n 6としているのは、1行目のtotalを含むためです。

ケース3:ファイルサイズが大きい順に表示

ディスク容量を圧迫しているファイルを特定:

ls -lhS

実行例:

$ ls -lhS
total 200M
-rw-r--r-- 1 user user 150M Jan 26 09:15 backup.tar.gz
-rw-r--r-- 1 user user  40M Jan 28 15:30 error.log
-rw-r--r-- 1 user user 8.5M Jan 27 14:22 access.log
-rw-r--r-- 1 user user 1.2K Jan 27 14:22 report.txt

ケース4:ディレクトリのみを表示

サブディレクトリの一覧を取得:

ls -ld */

実行例:

$ ls -ld */
drwxr-xr-x 2 user user 4096 Jan 28 10:30 Documents/
drwxr-xr-x 3 user user 4096 Jan 27 09:15 Scripts/
drwxr-xr-x 2 user user 4096 Jan 26 08:00 backup/

ケース5:i-node番号を表示

ファイルシステムレベルでの調査時に使用:

ls -li

実行例:

$ ls -li
total 48
1234567 -rw-r--r-- 1 user user 1234 Jan 28 15:30 error.log
1234568 -rw-r--r-- 1 user user 5678 Jan 27 14:22 access.log

実務での活用理由: ハードリンクの確認や、同一ファイルの重複チェックに有効です。


シニアエンジニアの知恵(Expert Advice)

1. エイリアスで効率化

lsに頻繁に使うオプションを組み合わせたエイリアスを.bashrc.zshrcに設定してください。

alias ll='ls -lhA'
alias lt='ls -lht'
alias ltr='ls -lhtr'

これにより、llと入力するだけで詳細表示+隠しファイル表示が可能になります。

2. lsの色分け表示

多くのディストリビューションではls --color=autoがデフォルトですが、設定されていない場合は以下を.bashrcに追加してください。

alias ls='ls --color=auto'

ディレクトリ、実行ファイル、シンボリックリンクなどが色分けされ、視認性が大幅に向上します。

3. lsではなくfindを使うべき場面

再帰的な検索や条件を指定したファイル探索には、ls -Rではなくfindコマンドを使用してください。

find /var/log -name "*.log" -mtime -7

ls -Rは出力が見にくく、パイプ処理にも不向きです。

4. パーミッション問題のトラブルシューティング

ls -lで権限を確認する際、実行権限(x)とディレクトリアクセス権限を混同しないでください。

drwxr-xr-x  # ディレクトリ:他ユーザーは読み取りと実行(入れる)が可能
drwxr-xr--  # ディレクトリ:他ユーザーは読み取りのみ(入れない)

ディレクトリのx権限がないと、cdで入れません。

5. lsの出力をスクリプトで使う際の注意

lsの出力をパイプで処理する場合、ファイル名にスペースや特殊文字が含まれるとエラーの原因になります。スクリプト内ではfindや配列を使用してください。

# 悪い例
for file in $(ls *.txt); do
  echo $file
done

# 良い例
for file in *.txt; do
  echo "$file"
done

6. ls -lhのサイズ表示の落とし穴

-hオプションは人間が読みやすい単位で表示しますが、ソートには影響しません。サイズ順にソートする場合は-Sオプションを併用してください。

ls -lhS