Bash:for循环,复制,备份

时间:2010-03-16 21:05:18

标签: bash loops backup for-loop cp

嘿,不是100%肯定这个错误意味着什么。

% for f in "*" ; do cp $f ../backup/backup$f ; done
cp: ../backup/backup* not found

目的是将所有文件复制到一个文件夹中,并将文件重命名为备份文件夹。

3 个答案:

答案 0 :(得分:7)

*不应该在引号中:

for f in * ; do cp $f ../backup/$f ; done

当你使用引号时,这会阻止shell扩展它,所以它正在寻找一个名为*的文件,而不是你所指的目录中的所有文件。

答案 1 :(得分:7)

你引用了错误的东西:引用变量,而不是通配符!

% for f in *; do cp "$f" "../backup/$f" ; done

顺便说一下,在这种情况下,你可以简单地做:

% cp * ../backup/

答案 2 :(得分:2)

或者可能是这样:

cp -b * ../backup 

如果您想要重命名它们:

% for f in * ; do cp "$f" "../backup/${f}-backup" ; done