所以我环顾四周,发现只有在目录已经创建的情况下才可以执行此操作,即:
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 \;
答案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 \;