2つのシェルコマンドを論理的に結合する方法はありますか?検索 - 実行?
たとえば、すべて印刷してみてください。.csv文字列fooとその発生回数を含むファイルを使用して、次のことをしたいと思います。
find . -iname \*.csv -exec grep foo {} && echo {} \;
しかし、強く打つ「'-exec' 引数の欠落」について文句を言います。
ベストアンサー1
-exec
シェルではなくコマンドを実行して結果を計算する述語です。本物または間違ったコマンドの結果(0または0以外の終了状態)に基づいています。
だから:
find . -iname '*.csv' -exec grep foo {} \; -print
会議印刷grep
ファイルにfooがある場合のファイルパス。代わりに、別の述語または別の述語を-print
使用できます。-exec
find . -iname '*.csv' -exec grep foo {} \; -exec echo {} \;
負の合計の演算子も参照し!
て見つけてください。-o
または。
または、次のようにシェルを起動できます。
find . -iname '*.csv' -exec sh -c '
grep foo "$1" && echo "$1"' sh {} \;
または、各ファイルに対してシェルを起動しないでください。
find . -iname '*.csv' -exec sh -c '
for file do
grep foo "$file" && echo "$file"
done' sh {} +