検索系コマンドのメモ

学習し始めもあってか検索系コマンドで混乱したのでメモ。

find コマンド

find はファイルそのものを探す。(ファイル名、サイズ、更新日時など)

# カレントディレクトリから「.txt」で終わるファイルを探す
find . -name "*.txt"

# 100MB以上のファイルを探す
find . -size +100MB

grep コマンド

grep はファイルの中身を探す。(特定の文字列や、キーワードなど)
引数に1つのファイルか複数ファイルかによって、マッチした時の振る舞いが違う。

  • 1つのファイルを引数に指定した場合は、単純にマッチした行のみを返す。
  • 複数のファイルを引数に指定した場合には、マッチした行の前にファイル名を合わせて表示される。(オプション -H を使えば1つのファイルでもファイル名を表示させることができる)
# score.csv の中から「Yamada」という文字が入った行を表示する
grep "Yamada" score.csv

# ディレクトリ内の全ファイルから「ERROR」という文字を探す(-r は再帰的にサブディレクトリまで)
grep -r "ERROR" .

find と grep は連携して使うと便利

find で条件にあったファイルを探す。
そして、検索結果のファイルをパイプと xargs を使って引数として grep に渡す。
grep はそのファイルの中身を検索する。

# 1. まず「.sh」ファイルを全部見つける
# 2. その中から「Yes」という文字が使われている行だけ抜き出す
find . -name "*.sh" | xargs grep "Yes"
ページの先頭へ