🔎
特定の文字列が入ったファイルを探す(grep -l)
環境
GNU bash 5.0.17
コマンド
$ grep -ril "table" ./themes
./themes/PaperMod/i18n/fr.yaml
./themes/PaperMod/i18n/en.yaml
./themes/PaperMod/layouts/partials/toc.html
./themes/PaperMod/layouts/partials/footer.html
./themes/PaperMod/theme.toml
./themes/PaperMod/.git/hooks/pre-commit.sample
./themes/PaperMod/README.md
./themes/PaperMod/assets/css/includes/scroll-bar.css
./themes/PaperMod/assets/css/core/reset.css
./themes/PaperMod/assets/css/common/post-single.css.bk
./themes/PaperMod/assets/css/common/post-single.css
./themes/PaperMod/assets/css/common/profile-mode.css
./themes/PaperMod/assets/js/highlight.min.js
./themes/PaperMod/assets/js/fuse.basic.min.js
なにをしてるの?
themes
ディレクトリを再帰的に検索し、table
という文字列がヒットしたらそのファイル名のみを出力します。
-l
オプションを使うことでファイル名のみ出力させることができます。
オプション
--recursive
)
-r(ディレクトリを再起的に検索する
--ignore-case
)
-i(大文字と小文字の区別をしない
--files-with-matches
)
-l(パターンに一致するファイル名のみ表示
おわりに
探したいファイル名を簡単に知れるようになりました。
find,xargs,awkあたりでどうにかするか...?と思っていたので目から鱗でした。
参考
man grep
Discussion