在目的地使用通配符或正则表达式将文件复制到目录?

我想执行这个 cp debian.master/abi/2.6.38*/amd64/generic debian.master/abi/2.6.38*/amd64/core2 但 bash 在第二个 * 中提供了错误:

cp: cannot create regular file `debian.master/abi/2.6.38*/amd64/core2': No such file or directory

如何在同一目录中复制一个文档,但是当其他名称不更改目录或写入整个文件夹名称时?

1
2022-06-07 14:36:17
资源 分享
答案: 2

该错误是由于 shell 在执行命令之前尝试扩展 * glob 个性,并且该位置还不存在。 征服这一点的一种可能性是

cp debian.master/abi/2.6.38*/amd64/generic "$(eval echo debian.master/abi/2.6.38*/amd64)"/core2

更简单的是,您可以这样做:

( cd debian.master/abi/2.6.38*/amd64/; cp generic core2 )

或者另外

dir=debian.master/abi/2.6.38*/amd64/
cp "$dir"/generic "$dir"/core2
4
2022-06-07 15:00:00
资源

假设 debian.master/abi/2.6.38* 扩展到几个目录站点:

for dir in debian.master/abi/2.6.38*/amd64; do cp $dir/generic $dir/core2; done
0
2022-06-07 14:59:32
资源