特定の名前と内容を含むファイルを見つけるには、検索を使用します。

特定の名前と内容を含むファイルを見つけるには、検索を使用します。

私はLinuxに初めて触れました。というファイルを探してstart.sh検索を開始し/、エラーを抑制しようとします。同時にファイルにsys_home

これが正しいか教えてください。

find / -name start.sh | grep "sys_home" *

答え1

パイプ(|)を接続するgrepとから読み取られるため、stdinファイル名パラメータ()を追加する必要はありません*

find / -name start.sh | grep "sys_home"

しかし、期待どおりに動作しません!find名前のリストが出力され、ファイルの内容ではなくこのリスト内で一致しようgrepとします。sys_home


(代替)findと一緒に使用する必要があります。-execxargs

find / -name 'start.sh' -exec grep -q 'sys_home' {} \; -print

2>/dev/nullエラーメッセージを表示しないように追加

find / -name 'start.sh' -exec grep -q 'sys_home' {} \; -print 2>/dev/null

代わりにgrep、再帰パターン(r)を直接使用することもできますが、これはより簡単だと思います。

grep -rls 'sys_home' --include='start.sh' /
  • -r再帰モード
  • --include='start.sh'グローブパターンに一致するファイルのみを探すstart.sh
  • -l一致する行を除き、ファイル名のみを印刷します。
  • -sエラーメッセージの抑制

関連情報