ファイルを見つけてファイル名を変数に保存し、この変数を-execで使用していくつかの計算をしたいその次に、例えばのでbashスクリプト:コマンドの結果を変数に保存して-execで使用する方法
検索は、コマンドを見つけると同時に、何か他のものを生成するために、私は-execでそのファイル名を使用してファイル名を返すたびに、このファイルを見つけ
おかげ
ファイルを見つけてファイル名を変数に保存し、この変数を-execで使用していくつかの計算をしたいその次に、例えばのでbashスクリプト:コマンドの結果を変数に保存して-execで使用する方法
検索は、コマンドを見つけると同時に、何か他のものを生成するために、私は-execでそのファイル名を使用してファイル名を返すたびに、このファイルを見つけ
おかげ
ドンエグゼクティブ
find -whatever |
while read filename; do
Whatever you did in -exec before "$filename"
Other thing "$filename"
done
ただし、特殊文字を含むファイル名では堅牢ではありません。
編集:
find -whatever -exec sh -c 'whatever you did in -exec before {}; other thing {}' \;
それとも、シェルスクリプトに出力をマングルすることができます:あなたはfind
によって返されたヒットに複数のものをしたい場合は、これは同様find -exec
またはxargs
と確かに可能ですそしてsh
にそれを養う:
find -whatever -printf 'mv %p destdir; ln -s destdir/%f %h\n' | sh
しかし、あなたが本当に、本当にアクションは、すぐとして起こるしたい場合はファイルについて学び、おそらく道のりは-exec
です。あなたが達成したいことを説明することはできますか?
find
によって返されるヒットのリストを保持したい場合は、追加の作業を行うことができますfind
が終了した後、最後の例のようにヒットを出力し、出力をファイルに格納するか、最初の例のように別のコマンドにパイプします。
「私は文章、ラインの例の文字列を、それぞれのファイル名を取り、情報のために内部検索したい」 - ジョナサンをOK、それはあなたが
回答:-)あなたの質問に述べているべきです。
find /dir -iname "*whatever*" | xargs grep 'text'
は、ディレクトリ/ dirの下にあるすべてのファイル*whatever*
内のテキスト "テキスト" を検索します。
これは 'find -whatever -exec grep 'テキスト' {} \; 'を改善しますが、それでも私はまだその質問を理解しているとは感じません。 – tripleee
@treepleee、あなたが書いたのは、コマンドラインのバーバリズムです:大量のファイルでは非常に遅くなるでしょう - それは別々にgrepを実行します!私の解決策では、grepはファイル全体のxargsによって実行されます。 – TMS
私は同意しますが、私が作ろうとしている主な点は、「xargs」が主な質問に(どのように見えるのか)助けにならないことです。各ファイルに複数のことを行う方法。あなたは確かにシェル呼び出しをハックすることができますが、 'find -exec'でもそうすることができます。 – tripleee
あなたのやりたいことを教えてください。これはあなたがそれを最も簡単な方法で取っていないと思います。 '-exec'を歌っても、それほど効率的ではありません。 – TMS
こんにちはトーマス、私は各ファイル名を取って、内部の情報、例えば行、文章などの中の文字列を検索したいが、私は特定の名前を持つファイルを見つけるとすぐにこれをしたい。 – jonathan