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