2010-03-16 35 views
1

嘿,不是100%确定这个错误是什么意思。Bash:for循环,复制,备份

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

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

回答

5

*不应该在报价:

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

当您使用引号这样可以防止外壳的膨胀,因此它正在寻找一个叫做*文件,其中是目录不是所有文件你的意思是。

7

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

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

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

% cp * ../backup/

1

或者可能是这样的:

cp -b * ../backup 

如果你希望他们被重新命名:

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