🔎

特定の文字列が入ったファイルを探す(grep -l)

2023/07/08に公開

環境

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オプションを使うことでファイル名のみ出力させることができます。

オプション

-r(--recursive)

ディレクトリを再起的に検索する

-i(--ignore-case)

大文字と小文字の区別をしない

-l(--files-with-matches)

パターンに一致するファイル名のみ表示

おわりに

探したいファイル名を簡単に知れるようになりました。
find,xargs,awkあたりでどうにかするか...?と思っていたので目から鱗でした。

参考

man grep
https://qiita.com/yukibe/items/d250c18b177357340042

Discussion