【发布时间】:2018-08-07 15:33:11
【问题描述】:
mkdir zipFiles
find . -name '*.zip' -exec cp {} zipFiles/ \;
Error:
cp: ‘./zipFiles/status.zip’ and ‘zipFiles/status.zip’ are the same file
我尝试了这些命令来强制复制以覆盖现有文件,但它们都不起作用;
find . -name '*.zip' -exec cp {} zipFiles/ \;
find . -name '*.zip' -exec cp -f {} zipFiles/ \;
find . -name '*.zip' -exec cp -rf {} zipFiles/ \;
find . -name '*.zip' -exec cp {} -rf zipFiles/ \;
【问题讨论】:
-
你可以简单地先做一个
rm -rf,然后做cp -f {}——如果文件在zipFiles/目录中不存在...rm它不会失败。所以它基本上就像,“如果文件已经存在,删除它”——然后复制它.. -
@Zak 问题是
find试图复制它自己已经复制到zipFiles的文件。删除它们并重新复制它们只会产生无限循环。 -
问题不在于它拒绝覆盖文件。问题是您要求复制源和目标相同的文件,例如
cp foo foo这毫无意义。