ls・tree・sort・uniq コマンドの使い方
lsコマンド
基本のオプション
オプション | 説明 |
---|---|
-a | 隠しファイルを含めた全てのファイルとディレクトリを表示します。 |
-l | 詳細情報を表示します(ファイルの種類、パーミッション、リンク数、所有者、グループ、サイズ、タイムスタンプ)。 |
-h | ファイルサイズを人が読みやすい形式(例:KB、MB)で表示します(-l オプションと一緒に使います)。 |
-r | ファイルを逆順に表示します。 |
-t | ファイルを変更時間でソートして表示します。 |
-S | ファイルサイズでソートして表示します。 |
-G | macOSでファイルの種類ごとに色分けして表示します |
実践
これらのオプションは組み合わせて使用することができます。例えば、すべてのファイルを詳細表示し、ファイルサイズを人が読みやすい形式で表示するには、以下のようにコマンドを実行します。
ls -lah
別の例として、すべてのファイルをファイルサイズの大きい順に詳細表示するには、以下のようにします。
ls -lhaS
便利なオプション
ls コマンドのその他の便利なオプションについても追加説明します。オプション | 説明 |
---|---|
-F | 各ファイルの後ろに、ファイルの種類を示す文字(/ = ディレクトリ、* = 実行可能ファイルなど)を追加して表示します。 |
-d | ディレクトリ自体を表示し、内容を表示しない。 |
--group-directories-first | ディレクトリを先に表示し、その後にファイルを表示します(GNU lsにはあるが、macOSにはない)。 |
-i | 各ファイルのinode番号を表示します。 |
-o | -lに似ていますが、グループ情報を省略します。 |
-1 | 各ファイルやディレクトリを1行に1つずつ表示します。 |
これらのオプションも組み合わせて使うことができます。例えば、ファイルとディレクトリを種類に応じて識別しやすくするために、-F オプションを使います。
ls -lF
さらに、-G オプション(macOSにはない場合がある)は、詳細表示からグループ情報を省略したい場合に便利です。macOSでは -o オプションが似たような目的で使えます。
ls -lo
これらは ls コマンドの多くのオプションの一部です。特定のニーズに応じて、これらのオプションを組み合わせて使用することができます。さらに詳細な情報や、ここに記載されていないオプションを探す場合は、ターミナルで man ls を実行してマニュアルページを参照してください。
grep コマンドとの組み合わせ
ls コマンドは、他のコマンドと組み合わせて使用することで、さらに強力な操作が可能になります。以下は、ls コマンドを他のコマンドと組み合わせた便利な例です。ファイルやディレクトリのリストから特定のパターンにマッチするものだけを抽出したい場合、ls コマンドの出力を grep コマンドにパイプで渡します。
ls -l | grep '^d'
このコマンドは、現在のディレクトリ内のすべてのディレクトリ(-l オプションで詳細表示されたリストの中で、行の先頭が d で始まるもの)をリストアップします。
ファイルのみ表示させる場合は、次のようにします。
ls -l | grep '^-'
sort コマンドとの組み合わせ
ファイルのリストを特定の基準でソートしたい場合は、ls コマンドの出力を sort コマンドにパイプで渡します。
ls -l | sort -k 5 -n
このコマンドは、ファイルサイズ(第5フィールド)に基づいて、ファイルのリストを数値的にソートします。
wc コマンドとの組み合わせ
ディレクトリ内のファイルやサブディレクトリの総数を知りたい場合は、ls コマンドの出力を wc コマンドにパイプで渡して、行数をカウントします。
ls -1 | wc -l
このコマンドは、現在のディレクトリ内のファイルとサブディレクトリの総数を表示します。
head または tail コマンドとの組み合わせ
ディレクトリ内のファイルリストの先頭や末尾の数ファイルだけを表示したい場合に便利です。
- 最初の5ファイルを表示:
ls -l | head -n 5
- 最後の5ファイルを表示:
ls -l | tail -n 5
xargs コマンドとの組み合わせ
特定のファイルに対してバッチ操作を行いたい場合に、ls と xargs を組み合わせます。
- .txt ファイルをすべて削除:
ls *.txt | xargs trash
これらの例は、ls コマンドをより強力に使うための一部です。これらのコマンドを組み合わせることで、さまざまなタスクを効率的に実行することができます。この例では安全のためtrashを使っています。削除操作でrm コマンドを行う場合は、操作の影響をよく理解してから実行してください。
treeコマンド
tree コマンドで、現在のディレクトリ配下をツリー表示してくれます。treeのインストール
brew install tree
$ 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 が存在することが前提です。
$ tree --gitignore
とくにbuildディレクトリなど弾いてくれると、ツリー構造がとても見やすくなります。
sortコマンド
sortコマンドは、テキストファイルの内容を行単位で並び替えるために使用されます。標準入力からのデータや、指定したファイルの内容をソートすることができます。ここでは、sortコマンドの主なオプションと使用例を紹介します。【sortまとめ】基本的な使用法
内容 | 実行コマンド |
---|---|
ファイル内容のソート | sort ファイル名 |
複数ファイルの内容を結合してソート | sort ファイル名1 ファイル名2 |
オプション
オプション | 説明 |
---|---|
-n | 数値としてソートします。デフォルトでは文字列としてソートされます。 |
-r | 逆順でソートします(降順)。 |
-k | キーとして指定したフィールド(列)のみでソートします。例えば、-k 2なら2列目のデータを基準にソートします。 |
-t | フィールドの区切り文字を指定します。デフォルトはスペースです。 |
-u | 重複を削除してユニークな行のみを出力します。 |
-o | 出力先ファイルを指定します。 |
-f | 大文字と小文字を区別せずにソートします。 |
-c | ソートされているかをチェックし、ソートされていない場合は最初の箇所を報告します。 |
-m | 既にソートされている複数のファイルをマージします。 |
数値順にソートする
sort -n ファイル名
逆順でソートする
sort -r ファイル名
2列目を数値としてソートする
sort -k 2 -n ファイル名
カンマ区切りのファイルで、2列目を基準にソートする
sort -t, -k2 -n ファイル名
次のサンプルデータを用意しました。このデータには、果物の名前と数量がカンマ区切りで記載されています。
りんご,100
ばなな,20
ぶどう,300
みかん,50
なな,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を使ってみよう
重複行の数をカウントする
sort ファイル名 | uniq -c
重複している行のみを表示する
sort ファイル名 | uniq -d
重複していない行のみを表示する
sort ファイル名 | uniq -u
大文字と小文字を無視して重複行をフィルタリングする
sort ファイル名 | uniq -i