我想将所有名称为 XYZ* 的文件复制到一个文件夹中。问题在于文件位于不同的子文件夹中,甚至所有文件的文件夹结构深度都不相同。幸运的是,至少每个文件都有一个唯一的名称。
当然,我想到了 cp 命令,但我想文件夹结构的深度需要相同才能工作。
Jam*_*at7 10
如果您想避免find ... -exec cp ...使用 bash(并且没有 zsh 为其 ** 形式)启动许多单独的进程(如 using可能会这样做),您可以按如下方式执行单个 cp:
cp -p $(find path/to/src -name 'XYZ*') path/to/dest
Run Code Online (Sandbox Code Playgroud)
$(...) 形式是一个 posix 版本的反引号过程替换。下面是一个例子。
find . -name 'd*a'
cp -p $(find . -name 'd*a') ../zeta
ls ../zeta
Run Code Online (Sandbox Code Playgroud)
这些命令产生以下输出:
./.?/dx2a
./.?/dx4a
./.tdot1/dx1a
./.tdot2/dx2a
cp: will not overwrite just-created `../zeta/dx2a' with `./.tdot2/dx2a'
dx1a dx2a dx4a
Run Code Online (Sandbox Code Playgroud)
您可以使用find来实现此目的:
$ find path/to/src -type f -name XYZ\* -exec cp -p {} path/todest/ \;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27805 次 |
| 最近记录: |