私は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
と一緒に使用する必要があります。-exec
xargs
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
エラーメッセージの抑制