検索系コマンドのメモ

学習し始めもあってか検索系コマンドで混乱したのでメモ。
find コマンド
find はファイルそのものを探す。(ファイル名、サイズ、更新日時など)
# カレントディレクトリから「.txt」で終わるファイルを探す
find . -name "*.txt"
# 100MB以上のファイルを探す
find . -size +100MBgrep コマンド
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"