2

嘿,不是 100% 确定这个错误是什么意思。

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

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

4

3 回答 3

10

*不应该在引号中:

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

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

于 2010-03-16T21:06:14.977 回答
7

您引用了错误的内容:引用变量,而不是通配符!

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

顺便说一句,在这种情况下,您可以简单地执行以下操作:

% cp * ../backup/

于 2010-03-16T21:10:43.143 回答
3

或者可能是这样的:

cp -b * ../backup 

如果要重命名它们:

% for f in * ; do cp "$f" "../backup/${f}-backup" ; done
于 2010-03-16T21:35:33.427 回答