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

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

我想执行这个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

错误是因为 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

答案2

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

for dir in debian.master/abi/2.6.38*/amd64; do cp $dir/generic $dir/core2; done

相关内容