すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

IT用語

【IT用語】 lsとは?豊富な具体例で使い方とオプションを徹底解説!

ぴっかちゃん
ぴっかちゃん

lsコマンドとはファイルやディレクトリの一覧(リスト)を表示するときに使用するコマンドです。ターミナルから特定のディレクトリ配下の一覧を表示するときに便利です。

lsコマンドの出力結果は、次の画像のようにFinderでディレクトリを展開したときと同じ表示になります。

ターミナルでコマンドを打つと考えると難しく感じますが、lsコマンドの役割はFinderでディレクトリを展開しているのと同じで非常にシンプルです。

lsコマンドとは

lsコマンドは冒頭でも説明した通り、Finderでディレクトリを展開した内容と同じものをターミナルで表示しているに過ぎず、非常にシンプルなコマンドです。

しかし、Finderと違ってlsコマンドはオプションを使って表示する一覧の項目を変更したり、他のコマンドと併用して一覧で表示する内容を絞ったりすることができます。

オプションも含めたlsコマンドの使い方を知り、指定したディレクトリ一覧の表示の使い勝手をよくしましょう。

lsコマンドのオプションを確認したい方はこちら

lsコマンドの基本的な使い方

次のようなフォルダ構成でlsコマンドの基本的な使い方を説明します。

用意したファイルとフォルダ

lsと打つと、カレントディレクトリにあるディレクトリとファイルの一覧を次のように表示できます。

/Users/ユーザー名/Desktop | カレントディレクトリの一覧を表示する場合
1
2
3
$ ls

sample2_dir  sample_dir  test1.txt  test2.txt  test3.txt

デスクトップの中身

ディレクトリを指定した場合

ls ディレクトリ名と打つと、指定したディレクトリにあるディレクトリとファイルの一覧を次のように表示できます。

/Users/ユーザー名/Desktop | ディレクトリを指定した場合
1
2
3
$ ls sample_dir # ディレクトリを指定

sample_dir_image1.png  sample_dir_image2.png  sample_dir_text1.txt  sample_dir_text2.txt

sample_dirの中身

ディレクトリ名を指定する場合は、カレントディレクトリに対象ディレクトリがなければ、カレントディレクトリからの相対パスか絶対パスを含んだディレクトリ名を指定する必要があります。
cdで親ディレクトリに移動した後に、lsとするとsample_dirがありません。

/Users/pikawaka |親ディレクトリに移動してから一覧を表示
1
2
3
4
5
6
7
8
$ cd .. # Desktopから親ディレクトリへ移動
$ pwd # カレントディレクトリを表示
/Users/pikawaka

$ ls # 一覧を表示

Applications  Documents  Library  Music  Public
Desktop  Downloads  Movies  Pictures

ディレクトリがない場合にパスを指定するとエラーになります。

/Users/pikawaka | 対象ディレクトリがない場合
1
2
3
$ ls sample_dir # カレントディレクトリにないディレクトリを指定

ls: sample_dir: No such file or directory

カレントディレクトリにないディレクトリを指定する場合は、相対パスか絶対パスを含んだディレクトリ名を指定するようにしましょう。

/Users/pikawaka | 相対パスの場合
1
2
3
$ ls Desktop/sample_dir # 相対パスで指定

sample_dir_image1.png  sample_dir_image2.png  sample_dir_text1.txt  sample_dir_text2.txt
/Users/pikawaka | 絶対パスの場合
1
2
3
$ ls /Users/ユーザー名/Desktop/sample_dir # 絶対パスで指定

sample_dir_image1.png  sample_dir_image2.png  sample_dir_text1.txt  sample_dir_text2.txt
ポイント
  1. lsとだけ打つと、カレントディレクトリのファイル一覧が表示されます。
  2. ls ディレクトリ名と打つと、指定したディレクトリのファイルの一覧が表示されます。
  3. 指定したいディレクトリがカレントディレクトリにない場合は、ディレクトリ名を相対パスか絶対パスで記述する必要があります。

ワイルドカードを使った場合

ワイルドカードの?*を使うと、指定したパターンでファイルの絞り込みができるようになります。

項目 概要
? 任意の1文字を指定するときに利用
* 0文字以上の文字を指定するときに利用

例えばワイルドカードを使うと、特定の拡張子のパターンのみ表示するといった場合に利用できます。

表示結果を分かりやすくするために、.txt以外の拡張子のファイルを作成します。

/Users/ユーザー名/Desktop | touchコマンドで.html拡張子のファイルを作成
1
2
3
4
5
6
7
8
9
$ cd ~/Desktop # デスクトップへ移動

$ touch html1.html # html1.htmlというファイルを作成
$ touch html2.html # html2.htmlというファイルを作成

# ファイルが作成されたか確認
$ ls 

html1.html  html2.html  sample2_dir  sample_dir  test1.txt  test2.txt  test3.txt

この一覧から、.txtの拡張子のみと、.htmlの拡張子のみを表示します。

/Users/ユーザー名/Desktop | *をつかって特定の拡張子のファイルだけを表示
1
2
3
4
5
6
7
$ ls *.txt # .txt拡張子のファイルのみ表示

test1.txt  test2.txt  test3.txt

$ ls *.html # .html拡張子のファイルのみ表示

html1.html  html2.html

このようにアスタリスク(*)は.拡張子(.txt や .html)の手前にある文字数が何文字でも末尾が指定した拡張子(.拡張子)で終わっているファイルの一覧を表示します。

次に?のワイルドカードの使い方を説明します。まず準備として説明用のファイルを作成します。

/Users/ユーザー名/Desktop | touchコマンドで.txt拡張子のファイルを作成
1
2
3
4
5
6
7
8
$ touch a.txt # a.txtというファイルを作成
$ touch ab.txt # b.txtというファイルを作成
$ touch abc.txt # c.txtというファイルを作成

# .txt拡張子のファイルのみ表示
$ ls *.txt

a.txt  ab.txt  abc.txt  test1.txt  test2.txt  test3.txt

準備ができました。?任意の一文字を表すと説明しました。
次のように?を利用します。

/Users/ユーザー名/Desktop | ?をつかって1文字の.txt拡張子のファイルだけを表示
1
2
3
$ ls ?.txt # 1文字の名前の.txt拡張子のファイル表示

a.txt
/Users/ユーザー名/Desktop | ?をつかって2文字の.txt拡張子のファイルだけを表示
1
2
3
$ ls ??.txt # 2文字の名前の.txt拡張子のファイルのみ表示

ab.txt
/Users/ユーザー名/Desktop | ?をつかって3文字の.txt拡張子のファイルだけを表示
1
2
3
$ ls ???.txt # 3文字の名前の.txt拡張子のファイルのみ表示

abc.txt

出力結果のように?に当てはまる文字数にマッチしたファイルを表示します。??と続けて二文字のファイル名のファイルが表示されます。

そしてマッチしなければ、エラーが表示されます。例えば、次の例では4文字の.txt拡張子のファイルはないので、????.txtをするとエラーが出ます。

/Users/ユーザー名/Desktop | 指定した文字数の.txt拡張子のファイルが存在しない場合
1
2
3
$ ls ????.txt # 存在しないパターンを指定

zsh: no matches found: ????.txt

?*.txtを使うと、?の数以上の文字数の.txtファイルを表示できます。

/Users/ユーザー名/Desktop | 2文字以上の.txt拡張子のファイルだけを表示
1
2
3
$ ls ??*.txt # 2文字以上の名前の.txt拡張子のファイルのみ表示

ab.txt  abc.txt  test1.txt  test2.txt  test3.txt

指定したパターンで一覧を表示できるのは、便利ですね。ここで今回学んだワイルドカードを使って、説明用に作成したファイルを削除します。

/Users/ユーザー名/Desktop | rmコマンドとワイルドカードの使い方
1
2
3
4
5
6
7
$ rm a*.txt # aから始まる.txt拡張子のファイルを削除
$ rm *.html # .htm拡張子のファイルを削除

# ファイルが削除されたか確認
$ ls 

sample2_dir  sample_dir  test1.txt  test2.txt  test3.txt
ポイント
  1. *は特定の拡張子のパターンのみ表示するのときに便利です。
  2. ?は特定の文字数 or 特定の文字数以上の指定したパターンで表示するときに便利です。

lsコマンドのオプション

lsコマンドにはオプションが豊富にあります。オプションが豊富にあるだけに、あまり使われていないオプションもたくさんあります。

この章では「よく使われる便利なオプション」 ~ 「使ってみると非常に便利なおすすめのオプション」について説明していきます。

オプション 説明
ls -a 隠しファイルも含めて全てのファイルを表示する。
ls -l ファイルの詳細を縦型で表示する。
ls -t ファイルを最新順に並べ替える。
ls -r ファイルを逆順に並べ替える。
ls -S ファイルをサイズの大きい順に並び替える。
ls -p ディレクトリの末尾にスラッシュ( / )を表示する。

ls -a: 隠しファイルも含めて全て表示

lsのオプションで一番使われていると言っても過言ではないのが-aオプションです。

-aオプションの特徴は、ドット(.)から始まる隠しファイルも含めて表示することです。

隠しファイルを作成して、lsを実行してもドット(.)から始まる隠しファイルは表示されません。

/Users/ユーザー名/Desktop | 隠しファイルを作成
1
2
3
4
$ touch .hiddenfile.txt # 隠しファイルを作成
$ ls 

test1.txt  test2.txt  test3.txt

しかし、-aオプションを使えば隠しファイルを表示できます。

/Users/ユーザー名/Desktop | -aオプションの使い方
1
2
3
$ ls -a #すべてのファイルを表示

.  ..  .hiddenfile.txt  sample2_dir  sample_dir  test1.txt  test2.txt  test3.txt

ls -l: ファイルの詳細を表示

-lオプション( L の小文字)は、-aオプションについでよく使われるオプションです。
-lオプションの特徴は、ファイルの詳細を縦に表示してくれることです。

lsを単に実行しただけでは、ファイル名しか表示できませんでした。
しかし、-lオプションをつかうと、左からファイルモード、ユーザー名、グループ名、タイムスタンプ、ファイル名などの詳細情報も合わせて表示できます。

/Users/ユーザー名/Desktop | -lオプションの使い方
1
2
3
4
5
6
7
8
$ ls -l # ファイルの詳細を表示

total 0
drwxr-xr-x  2 pikawaka  staff   64 4  4 12:00 sample2_dir
drwxr-xr-x  6 pikawaka  staff  192 4  2 12:00 sample_dir
-rw-r--r--  1 pikawaka  staff    0 4  1 12:00 test1.txt
-rw-r--r--  1 pikawaka  staff    0 4  3 12:00 test2.txt
-rw-r--r--  1 pikawaka  staff    0 4  5 12:00 test3.txt

ファイルの詳細を確認したいときに使いましょう。

またファイル数が少ない場合は、lsでも不便は感じませんがファイル数が多くなると縦の方が見やすくなるので、
lsで見辛いなと思ったら、-lオプションを使うようにしましょう。

ls -t: ファイルを最新順に並べ替え

-tオプションの特徴は、ファイルの順番を最新順にして表示できることです。

lsはデフォルトではアルファベット順にファイルを表示します。

/Users/ユーザー名/Desktop | aとzから始まるファイルとディレクトリを作成
1
2
3
4
5
6
7
$ touch a.txt # a.txtというファイルを作成
$ mkdir z_dir # z_dirというディレクトリを作成

# アルファベット順に表示
$ ls

a.txt  sample_dir  sample2_dir  test1.txt  test2.txt  test3.txt  z_dir

しかし、-tオプションを使えば、ファイルを作成した順番に表示できます。

/Users/ユーザー名/Desktop | -tオプションの使い方
1
2
3
$ ls -t # 最新順に表示

z_dir  a.txt  test3.txt  sample2_dir  test2.txt  sample_dir  test1.txt

ls -r: ファイルを逆順に並べ替え

-rオプションの特徴は、ファイルの順番を逆さにして表示できることです。

lsはデフォルトではアルファベット順にファイルを表示すると説明しました。
しかし、-rオプションをつかえば逆アルファベット順にファイルを表示できます。

/Users/ユーザー名/Desktop | -rオプションの使い方
1
2
3
$ ls -r # 逆アルファベット順に表示

z_dir  test3.txt  test2.txt  test1.txt  sample2_dir  sample_dir  a.txt

後ほど説明しますが、他のオプションと組み合わせることで、他の基準で並べ替えた順番を逆さにすることもできます。

最後に、作成したファイルとディレクトリを削除しておきます。

/Users/ユーザー名/Desktop | 作成したファイルとディレクトリを削除
1
2
3
4
5
# 作成したファイルを削除しておく
$ rm a.txt

# 作成したディレクトリを削除しておく
$ rmdir z_dir

ls -S: ファイルをサイズの大きい順に並べ替え

-Sオプション( s の大文字)の特徴は、ファイルをサイズの大きい順番にして表示できることです。

lsはデフォルトではアルファベット順にファイルを表示すると説明しました。
しかし、-Sオプションをつかえばサイズの大きい順にファイルを表示できます。

ファイル内に記載されている文字数が多いほどファイルサイズは大きくなります。

まずは、説明用のファイルを作成します。

/Users/ユーザー名/Desktop | 説明用ファイルの作成
1
2
3
4
5
6
7
# 空のhtmlファイルを3つ作成
$ touch size01.html size02.html size03.html

# htmlファイルをアルファベット順に表示
$ ls *.html

size01.html  size02.html  size03.html

作成したファイルは中身がない状態なので、それぞれのファイルに文字を書き込みます。

/Users/ユーザー名/Desktop | ファイルに文字を書き込む
1
2
3
$ echo "a" > size01.html # size01.htmlに1文字書き込む
$ echo "ab" > size02.html # size02.htmlに2文字書き込む
$ echo "abc" > size03.html # size03.htmlに3文字書き込む

いよいよ、-Sオプションを使ってファイルを大きい順に並べ替えます。

/Users/ユーザー名/Desktop | -Sオプションの使い方
1
2
3
4
# htmlファイルをサイズの大きい順に表示
$ ls -S *.html

size03.html  size02.html  size01.html

無事にサイズの大きい(ファイル内に記載されている文字数が多い)順にファイルが表示されました。

最後に、作成したファイルを削除しておきます。

/Users/ユーザー名/Desktop | 作成したファイルの削除
1
2
# 作成したファイルを削除しておく
rm size*.html

ls -p: ディレクトリの末尾にスラッシュ( / )を表示

-pオプションの特徴は、ディレクトリ名の末尾にスラッシュ(/)をつけて表示できる ことです。

lsコマンドを単に実行しただけでは、表示される名前から、それがファイルかディレクトリなのかを判断しなければいけませんでした。

しかし、-pオプションを使えば、ディレクトリの場合のみ末尾にスラッシュ(/)をつけて表示することができ、勘違いをしてしまうこともなくなります。

/Users/ユーザー名/Desktop | -pオプションの使い方
1
2
3
$ ls -p # ファイルとディレクトリを区別して表示

sample2_dir/  sample_dir/  test1.txt  test2.txt  test3.txt

lsコマンドのオプションの便利な組み合わせ

前章で説明したオプションを組み合わせることで、一覧の表示の使い勝手がよくなります。
ここでは便利なオプションの組み合わせについて解説します。

オプション 説明
ls -la 隠しファイルも含めてファイルの詳細を表示する。
ls -ltr ファイルを古い順に表示する
ls -lSh ファイルの詳細をサイズの大きい順に表示する

ls -la: すべてのファイルの詳細を表示

-lオプションと-aオプションを組み合わせることで、隠しファイルも含めた一覧を詳細に表示します。

/Users/ユーザー名/Desktop | -laオプションの使い方
1
2
3
4
5
6
7
8
9
10
11
$  ls -la #  すべてのファイルの詳細を表示

total 0
drwx------+  9 pikawaka  staff  288 Apr 15 23:11 .
drwxr-xr-x+ 15 pikawaka  staff  480 Apr 15 22:42 ..
-rw-r--r--   1 pikawaka  staff    0 Apr 15 23:11 .hiddenfile.txt
drwxr-xr-x   2 pikawaka  staff   64 Apr  4 12:00 sample2_dir
drwxr-xr-x   6 pikawaka  staff  192 Apr  2 12:00 sample_dir
-rw-r--r--   1 pikawaka  staff    0 Apr  1 12:00 test1.txt
-rw-r--r--   1 pikawaka  staff    0 Apr  3 12:00 test2.txt
-rw-r--r--   1 pikawaka  staff    0 Apr  5 12:00 test3.txt

ls -ltr: ファイルの詳細を古い順に表示

-lオプションと-tオプション-rオプションを組み合わせることで、作成 / 更新したのが古いファイルから詳細を表示します。

/Users/ユーザー名/Desktop | -ltrオプションの使い方
1
2
3
4
5
6
7
8
9
10
$ touch latest.txt # ファイルを作成
$ ls -ltr # ファイルの詳細を古い順に表示

total 0
-rw-r--r--  1 pikawaka  staff    0 4  1 12:00 test1.txt
drwxr-xr-x  6 pikawaka  staff  192 4  2 12:00 sample_dir
-rw-r--r--  1 pikawaka  staff    0 4  3 12:00 test2.txt
drwxr-xr-x  2 pikawaka  staff   64 4  4 12:00 sample2_dir
-rw-r--r--  1 pikawaka  staff    0 4  5 12:00 test3.txt
-rw-r--r--  1 pikawaka  staff    0 4 15 23:15 latest.txt

このコマンドが便利なところは、最新でダウンロードしたファイルの名前を忘れたときなどに、Downloadsディレクトリでコマンドを打つと、最後の方に出てきたのがダウンロードしたファイルなので、思い出すことができます。

Downloadsディレクトリのファイルが沢山多くなると、ls -ltコマンドでは↑までスクロールが少し面倒なので、ls -ltrを使います。

最後に、作成したファイルを削除しておきます。

/Users/ユーザー名/Desktop | 作成したファイルを削除
1
2
# 作成したファイルを削除しておく
$ rm latest.txt

ls -lSh: ファイルの詳細をサイズの大きい順に表示

-lオプションと-Sオプション-hオプションを組み合わせることで、サイズの大きいファイルから詳細を表示します。

中でも、-hオプションの特徴は、ファイルの詳細に含まれるサイズ情報の末尾に単位を付与して表示することです。

まずは、説明用に空のファイルを作成してから、それぞれのファイルに文字を書き込みます。

/Users/ユーザー名/Desktop | 説明用ファイルの作成
1
2
3
4
5
6
# 空のhtmlファイルを3つ作成
$ touch size01.html size02.html size03.html

$ echo "a" > size01.html # size01.htmlに1文字書き込む
$ echo "ab" > size02.html # size02.htmlに2文字書き込む
$ echo "abc" > size03.html # size03.htmlに3文字書き込む

いよいよ、-lShオプションを使って、ファイルの詳細をサイズの大きい順に表示します。

/Users/ユーザー名/Desktop | -lShオプションの使い方
1
2
3
4
5
6
# .html拡張子のファイルの詳細をサイズの大きい順に表示
$ ls -lSh *.html

-rw-r--r--  1 pikawaka  staff     4B 4 15 23:33 size03.html
-rw-r--r--  1 pikawaka  staff     3B 4 15 23:33 size02.html
-rw-r--r--  1 pikawaka  staff     2B 4 15 23:33 size01.html

無事にサイズの大きい順に詳細情報が表示され、ファイルサイズにはバイトを意味するBという単位が末尾に加わっています

最後に作成したファイルを削除しておきます。

/Users/ユーザー名/Desktop | 作成したファイルを削除
1
2
# 作成したファイルを削除しておく
$ rm size*.html

lsコマンドと他のコマンドとの併用

パイプ|を使うと、コマンドを併用できます。今回はlsコマンドと一緒に使うと便利なコマンドを紹介します。

コマンド 説明
grep 検索する
cat -n 行番号をつける
head -n 先頭を取り出す

grep

lsコマンドとgrepコマンドを併用すれば、指定したディレクトリの一覧の内容を検索することができます。

ls | grep 検索したい文字列の「検索したい文字列」にファイル名かディレクトリ名を入れることによって、検索文字に一文字でも引っかかっているディレクトリやファイルの一覧を表示することができます。

/Users/ユーザー名/Desktop | lsとgrepを併用する
1
2
3
4
5
6
7
8
9
10
11
12
# sampleを名前に含むファイルとディレクトリのみ表示
$ ls | grep sample

sample2_dir
sample_dir

# testを名前に含むファイルとディレクトリのみ表示
ls | grep test

test1.txt
test2.txt
test3.txt

ファイル名の記憶が曖昧なときに便利です!

cat -n

lsコマンドとcatコマンドを併用すれば、出力結果の先頭に行番号をつけることができます。

/Users/ユーザー名/Desktop | lsとcatを併用する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ touch a.txt z.txt # ファイルを2つ作成

# アルファベット順に並べ替えて行番号をつける
$ ls | cat -n
     1  a.txt
     2  sample2_dir
     3  sample_dir
     4  test1.txt
     5  test2.txt
     6  test3.txt
     7  z.txt

# 最新順に並べ替えて行番号をつける
$ ls -t | cat -n
     1  z.txt
     2  a.txt
     3  test3.txt
     4  sample2_dir
     5  test2.txt
     6  sample_dir
     7  test1.txt

ターミナルはテキストエディタとは違って、出力結果にデフォルトで行番号が出力されませんから、このようなちょっとした工夫が必要になります。

出力結果が長くて行番号なしでは見通しが悪かったり、並べ替えた結果に順位を表示させたい場合に便利です!

最後に作成したファイルを削除しておきます。

/Users/ユーザー名/Desktop | 作成したファイルを削除
1
2
# 作成したファイルを削除しておく
$ rm a.txt z.txt

head -n

lsコマンドとheadコマンドを併用すれば、並べ替えた結果から上位の内容だけを表示ができます。

ls 並び替えのオプション | head -n 表示したい件数の「並び替えのオプション」に-t-trなど、「表示したい件数」に整数を入れることによって、並び替えた結果から上位の結果のみを表示できます。

/Users/ユーザー名/Desktop | lsとheadを併用する
1
2
3
4
5
6
7
8
9
10
11
$ touch latest.txt # ファイルを作成

# 一番新しいファイルのみを表示
$ ls -t | head -n 1

latest.txt

# 一番古いファイルのみを表示
$ ls -tr | head -n 1

test1.txt

大量のファイルが保存されているディレクトリから、一部の内容のみを表示したいときに便利です!

最後に、作成したファイルを削除しておきます。

/Users/ユーザー名/Desktop | 作成したファイルを削除する
1
2
# 作成したファイルを削除しておく
$ rm latest.txt

コマンドについて学ぶには

「ls以外のコマンドについても、一通り学んでおきたい!」という方には、以下の書籍がおすすめです。

macOSのコマンドラインがよくわからない人のための「超」入門書
macOSのコマンドラインがよくわからない人のための「超」入門書

macOSのコマンドラインの「超入門」が学べる本です。

価格も安く、最低限知っておくべきことを学ぶのには最適ではないでしょうか。

この記事のまとめ

  • lsはディレクトリやファイルの一覧を表示するためのコマンド
  • ls*?を組み合わせれば、パターンに一致するファイルだけを表示できる
  • lsには隠しファイルを表示する-aや、ファイルの詳細情報を表示する-lなどのオプションがある
  • ls -alのようにオプションを複数組み合わせる便利な使い方もある
  • lsgrepなどのコマンドを組み合わせれば、ファイルを検索をしたりすることができる