【发布时间】:2010-03-16 21:05:17
【问题描述】:
嘿,不是 100% 确定这个错误是什么意思。
% for f in "*" ; do cp $f ../backup/backup$f ; done
cp: ../backup/backup* not found
目的是将文件夹中的所有文件复制到备份文件夹中,并将文件重命名为备份。
【问题讨论】:
标签: bash loops backup for-loop cp
嘿,不是 100% 确定这个错误是什么意思。
% for f in "*" ; do cp $f ../backup/backup$f ; done
cp: ../backup/backup* not found
目的是将文件夹中的所有文件复制到备份文件夹中,并将文件重命名为备份。
【问题讨论】:
标签: bash loops backup for-loop cp
* 不应该用引号引起来:
for f in * ; do cp $f ../backup/$f ; done
当您使用引号时,这会阻止 shell 扩展它,因此它正在寻找一个名为 * 的文件,而不是目录中的所有文件,这就是您的意思。
【讨论】:
您引用了错误的内容:引用变量,而不是通配符!
% for f in *; do cp "$f" "../backup/$f" ; done
顺便说一句,在这种情况下,您可以这样做:
% cp * ../backup/
【讨论】:
或者可能是这样的:
cp -b * ../backup
如果你想重命名它们:
% for f in * ; do cp "$f" "../backup/${f}-backup" ; done
【讨论】: