我想将名为XYZ *的所有文件复制到一个文件夹中。问题是文件位于不同的子文件夹中,甚至文件夹结构的深度对于所有文件都不相同。幸运的是,至少每个文件都有一个唯一的名称。
当然,我想到了cp命令,但我想文件夹结构的深度需要相同才能实现。
我想将名为XYZ *的所有文件复制到一个文件夹中。问题是文件位于不同的子文件夹中,甚至文件夹结构的深度对于所有文件都不相同。幸运的是,至少每个文件都有一个唯一的名称。
当然,我想到了cp命令,但我想文件夹结构的深度需要相同才能实现。
Answers:
如果你想避免find ... -exec cp ...
使用bash(并且没有为其**形式使用zsh)启动许多单独的进程(如使用可能),你可以按如下方式执行单个cp:
cp -p $(find path/to/src -name 'XYZ*') path/to/dest
$(...)表单是反滴答引用的流程替换的posix版本。以下是一个例子。
find . -name 'd*a'
cp -p $(find . -name 'd*a') ../zeta
ls ../zeta
这些命令产生以下输出:
./.?/dx2a
./.?/dx4a
./.tdot1/dx1a
./.tdot2/dx2a
cp: will not overwrite just-created `../zeta/dx2a' with `./.tdot2/dx2a'
dx1a dx2a dx4a