bash - 何ができますか: find .... - この&&それを実行しますか?

bash - 何ができますか: find .... - この&&それを実行しますか?

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 {} +

おすすめ記事