ls・tree・sort・uniq コマンドの使い方

lsコマンド

基本のオプション

オプション説明
-a隠しファイルを含めた全てのファイルとディレクトリを表示します。
-l詳細情報を表示します(ファイルの種類、パーミッション、リンク数、所有者、グループ、サイズ、タイムスタンプ)。
-hファイルサイズを人が読みやすい形式(例:KB、MB)で表示します(-l オプションと一緒に使います)。
-rファイルを逆順に表示します。
-tファイルを変更時間でソートして表示します。
-Sファイルサイズでソートして表示します。
-GmacOSでファイルの種類ごとに色分けして表示します

実践

これらのオプションは組み合わせて使用することができます。例えば、すべてのファイルを詳細表示し、ファイルサイズを人が読みやすい形式で表示するには、以下のようにコマンドを実行します。

bash
ls -lah

別の例として、すべてのファイルをファイルサイズの大きい順に詳細表示するには、以下のようにします。

bash
ls -lhaS

便利なオプション

ls コマンドのその他の便利なオプションについても追加説明します。
オプション説明
-F各ファイルの後ろに、ファイルの種類を示す文字(/ = ディレクトリ、* = 実行可能ファイルなど)を追加して表示します。
-dディレクトリ自体を表示し、内容を表示しない。
--group-directories-firstディレクトリを先に表示し、その後にファイルを表示します(GNU lsにはあるが、macOSにはない)。
-i各ファイルのinode番号を表示します。
-o-lに似ていますが、グループ情報を省略します。
-1各ファイルやディレクトリを1行に1つずつ表示します。

これらのオプションも組み合わせて使うことができます。例えば、ファイルとディレクトリを種類に応じて識別しやすくするために、-F オプションを使います。

bash
ls -lF

さらに、-G オプション(macOSにはない場合がある)は、詳細表示からグループ情報を省略したい場合に便利です。macOSでは -o オプションが似たような目的で使えます。

bash
ls -lo

これらは ls コマンドの多くのオプションの一部です。特定のニーズに応じて、これらのオプションを組み合わせて使用することができます。さらに詳細な情報や、ここに記載されていないオプションを探す場合は、ターミナルで man ls を実行してマニュアルページを参照してください。

grep コマンドとの組み合わせ

ls コマンドは、他のコマンドと組み合わせて使用することで、さらに強力な操作が可能になります。以下は、ls コマンドを他のコマンドと組み合わせた便利な例です。

ファイルやディレクトリのリストから特定のパターンにマッチするものだけを抽出したい場合、ls コマンドの出力を grep コマンドにパイプで渡します。

bash
ls -l | grep '^d'

このコマンドは、現在のディレクトリ内のすべてのディレクトリ(-l オプションで詳細表示されたリストの中で、行の先頭が d で始まるもの)をリストアップします。

ファイルのみ表示させる場合は、次のようにします。

bash
ls -l | grep '^-'

sort コマンドとの組み合わせ

ファイルのリストを特定の基準でソートしたい場合は、ls コマンドの出力を sort コマンドにパイプで渡します。

bash
ls -l | sort -k 5 -n

このコマンドは、ファイルサイズ(第5フィールド)に基づいて、ファイルのリストを数値的にソートします。

wc コマンドとの組み合わせ

ディレクトリ内のファイルやサブディレクトリの総数を知りたい場合は、ls コマンドの出力を wc コマンドにパイプで渡して、行数をカウントします。

bash
ls -1 | wc -l

このコマンドは、現在のディレクトリ内のファイルとサブディレクトリの総数を表示します。

head または tail コマンドとの組み合わせ

ディレクトリ内のファイルリストの先頭や末尾の数ファイルだけを表示したい場合に便利です。

  • 最初の5ファイルを表示:

bash
ls -l | head -n 5

  • 最後の5ファイルを表示:

bash
ls -l | tail -n 5

xargs コマンドとの組み合わせ

特定のファイルに対してバッチ操作を行いたい場合に、lsxargs を組み合わせます。

  • .txt ファイルをすべて削除:

bash
ls *.txt | xargs trash

これらの例は、ls コマンドをより強力に使うための一部です。これらのコマンドを組み合わせることで、さまざまなタスクを効率的に実行することができます。この例では安全のためtrashを使っています。削除操作でrm コマンドを行う場合は、操作の影響をよく理解してから実行してください。

treeコマンド

tree コマンドで、現在のディレクトリ配下をツリー表示してくれます。

treeのインストール

bash
brew install tree
bash
$ tree
.
├── composer.json
├── composer.lock
└── vendor
    ├── autoload.php
    ├── composer
    │   ├── ClassLoader.php
    │   ├── InstalledVersions.php
    │   ├── LICENSE
    │   ├── autoload_classmap.php
    │   ├── autoload_files.php
    │   ├── autoload_namespaces.php
    │   ├── autoload_psr4.php
    │   ├── autoload_real.php
    │   ├── autoload_static.php
    │   ├── installed.json
    │   ├── installed.php
    │   └── platform_check.php
    ├── guzzlehttp
    │   ├── guzzle
    ...

ただし、ディテクトり構造が大規模な場合はすべて表示されるため、オプションでフィルターをかけると便利です。

treeでよく使うオプションまとめ

オプション意味コマンド例
-dディレクトリのみ表示$ tree -d
-L level階層の深さを指定$ tree -L 2
-I patternパターンにマッチするものを除外$ tree -I 'build\|src'
--gitignore.gitignore でフィルタリング$ tree --gitignore

gitで管理している大規模プロジェクトなどでは、--gitignoreを使うとすごく便利です。もちろん .gitignore が存在することが前提です。

bash
$ tree --gitignore

とくにbuildディレクトリなど弾いてくれると、ツリー構造がとても見やすくなります。

sortコマンド

sortコマンドは、テキストファイルの内容を行単位で並び替えるために使用されます。標準入力からのデータや、指定したファイルの内容をソートすることができます。ここでは、sortコマンドの主なオプションと使用例を紹介します。

【sortまとめ】基本的な使用法

内容実行コマンド
ファイル内容のソートsort ファイル名
複数ファイルの内容を結合してソートsort ファイル名1 ファイル名2

オプション

オプション説明
-n数値としてソートします。デフォルトでは文字列としてソートされます。
-r逆順でソートします(降順)。
-kキーとして指定したフィールド(列)のみでソートします。例えば、-k 2なら2列目のデータを基準にソートします。
-tフィールドの区切り文字を指定します。デフォルトはスペースです。
-u重複を削除してユニークな行のみを出力します。
-o出力先ファイルを指定します。
-f大文字と小文字を区別せずにソートします。
-cソートされているかをチェックし、ソートされていない場合は最初の箇所を報告します。
-m既にソートされている複数のファイルをマージします。

数値順にソートする

bash
sort -n ファイル名

逆順でソートする

bash
sort -r ファイル名

2列目を数値としてソートする

bash
sort -k 2 -n ファイル名

カンマ区切りのファイルで、2列目を基準にソートする

bash
sort -t, -k2 -n ファイル名

次のサンプルデータを用意しました。このデータには、果物の名前と数量がカンマ区切りで記載されています。

text
りんご,100
ばなな,20
ぶどう,300
みかん,50
sortコマンドでこのデータの並び順を操作してみます。次はort -t, -k2 -n fruit_data.txtの実行結果です:
output
なな,20
みかん,50
りんご,100
いちご,200
ぶどう,300
あんず,500

重複を削除する

sort ファイル名 | uniq(またはsort -u ファイル名sortコマンドは、ログファイルの分析、データの前処理、または単純にファイル内の行を整理する際に非常に便利です。複数のオプションを組み合わせることで、さまざまなソート条件を指定できます。

uniqコマンド

uniqコマンドは、テキストファイル内の連続する重複行をフィルタリングするために使用されます。重複行は、直前の行と完全に同じである場合にのみ検出されるため、一般的にuniqコマンドはsortコマンドと組み合わせて使用されます。

【uniqまとめ】uniqのオプション一覧

オプション説明
-c各行が現れた回数を表示します。
-d重複している行のみを表示します。
-u重複していない行のみを表示します。
-i大文字と小文字の違いを無視して比較します。
-z入力と出力の行終端をNULL文字で扱います。
--count-cオプションと同様に、各行が現れた回数を表示します。
--repeated-dオプションと同様に、重複している行のみを表示します。
--unique-uオプションと同様に、重複していない行のみを表示します。
--ignore-case-iオプションと同様に、大文字と小文字の違いを無視して比較します。
--zero-terminated-zオプションと同様に、入力と出力の行終端をNULL文字で扱います。

【uniq初級編】uniqを使ってみよう

uniq処理の前にかならずsortコマンドで順番を整形してください。そうしないと重複削除がうまく機能しません。

重複行の数をカウントする

zsh
sort ファイル名 | uniq -c

重複している行のみを表示する

zsh
sort ファイル名 | uniq -d

重複していない行のみを表示する

zsh
sort ファイル名 | uniq -u

大文字と小文字を無視して重複行をフィルタリングする

zsh
sort ファイル名 | uniq -i
uniqコマンドはテキストの前処理やデータ分析など、さまざまなシナリオで有用です。特に、ログファイルやデータセットから重複を除外したり、特定のパターンがどれだけ頻繁に現れるかを確認したりする際に役立ちます。

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム