2011-09-15 10 views
0

の途中でデータIは、以下のようなスクリプトを持っている必要がある場合:シェル配管別のコマンド

find -name 'lib*.so' | xargs cp <files> ~/libs/. 

どこ<ファイル>私は以前、findコマンドから見つかったファイルです。基本的に私は最後にデータをパイプしたいが、途中でデータをパイプしたい。 ($ 1のようなもの)

私は変数でこれを持つことができ、Forループを使用することができると理解しています。&その変数を使用してください。私は上で説明しました。簡単な作業を簡単に行うことができます。

注:上記のスクリプトは、問題の種類と実際の問題を示すものです。

この種の可能性がある場合は教えてください。

+1

コマンドのオプションを探します。例えば、 'cp'はターゲットディレクトリを指定する' -t'オプションを持っています。このようにして、 'find'コマンドの結果を最後にパイプすることができます。 –

+0

'-t'オプションはPOSIXでは標準ではありませんが、GNUの' cp'には非常に便利です。 –

答えて

0

私はあなただけを見つける使用してこれを行うことができます

...私はあなたがここで何をしようとして理解してほしいです。

find -name 'lib*.so' -exec cp {} ~/libs/ \; 
+1

これは動作しますが、 'cp'の呼び出しごとに1つのファイルをコピーします。これは少し高価になります。 –

1

あなただけあなたが実行して各ファイルのcp(1)を起動することなく、唯一見つける使用してこれを行うことができます

find -name 'lib*.so ' -print0 | xargs -r0 cp --target ~/libs/ 
1

をコピーしたいと思う場合:

find -name 'lib*.so' -exec cp -t ~/libs {} + 

(注)このことGNU cpとPOSIX 2008に準拠したfindでしか動作しません。たとえば、GNU findと同じです。

関連する問題