次のコマンドを使用して、すべての .pl ファイルで文字列 "/local" を grep していますが、ここで何が問題なのか指摘できますか?
find . *.pl| xargs grep '/local' -sl
なぜ誰もが「見つける」ことを提案しているのですか? シェルは「.pl」ファイルを処理できます。
grep "/local" *.pl
引数を渡し-name
、引用します*.pl
:
find . -name "*.pl" | xargs grep '/local' -sl
-exec は遅くなる傾向があります。
私は部分的です:
find . -name "*.pl" -print0 | xargs -0 grep -sl '/local'
...改行を含むファイル名と混同されないためです。
ただし、GNU grep の一部のバージョンでは、検索するファイル名のリストが非常に長い grep コマンドによって引き起こされるメモリ リークが発生しているように見えることに注意してください。このような状況では、-exec の方が信頼性が高くなります。
同じくらい簡単にできます
find . -type f -name '*.pl' -exec grep '/local/' {} \;
または、 findがサポートしている場合はより最適な形式です。これにより、一度に複数のファイルがgrepに渡されます
find . -type f -name '*.pl' -exec grep '/local/' {} +