同じコマンドで特定のファイルを見つけて新しいディレクトリに移動するには?

同じコマンドで特定のファイルを見つけて新しいディレクトリに移動するには?

だからあなたの周りを見て、ディレクトリがすでに作成されている場合にのみこれを行うことができることがわかりました。つまり、次のようになります。

find source -name '*.z' -exec cp {} destination \;

しかし、同じコマンドでこれらのファイルを送信したい新しいディレクトリをどのように作成できますか?私が成功せずに試したことは次のとおりです。

find source -name '*.z' -exec cp {} | mkdir newDirectory \;

答え1

install1つのオプションは、このコマンドを代わりに使用することですcp。このコマンドには、すべてのデフォルトディレクトリを生成するオプションがあります。

find source -name '*.z' -exec install -D {} dest \;

答え2

あなたデータを転送できません。その方向にmkdir。次のことができます。

find source -name '*.z' -exec sh -c 'mkdir -p newDirectory && cp "$@" newDirectory' _ {} +

または(ファイル名に改行文字が含まれていないと仮定)

find source -name '*.z' | while IFS= read -r foo; do 
   mkdir -p newDirectory;
   cp "$foo" newDirectory;
done 

または、常に同じ名前を使用してディレクトリを作成したい場合:

mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;

関連情報