だから私は周りを見ていました、そして私が見つけたすべてはこれがディレクトリがすでに作成されている場合にのみこれを行う方法です、これはこれです:
find source -name '*.z' -exec cp {} destination \;
しかし、同じコマンドでこれらのファイルを送信する新しいディレクトリを作成するにはどうすればよいですか?これは私が試したものですが、成功しませんでした:
find source -name '*.z' -exec cp {} | mkdir newDirectory \;
1つのオプションは、install
の代わりにcp
コマンドを使用することです。主要なディレクトリをすべて作成するオプションがあります。
find source -name '*.z' -exec install -D {} dest \;
あなたは データをパイプすることはできません を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
または、ディレクトリを1つだけ作成する場合、名前は常に同じです。
mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;