我想检索特定文件,然后将cp
结果放入另一个目录。一切正常,但我的命令似乎被执行了第二次。
例如,我有一个文件a
,我想将cp
其放入子目录中test/
,因此我运行:
find . -mtime -1 -name a -exec cp {} test/ ';'
我的文件已按需要复制到子目录中,但随后收到以下错误消息:
cp: './test/a' and 'test/a' are the same file
答案1
您有一个竞争条件 - 首先find
找到./a
并将其复制到test/a
,然后找到新复制的./test/a
并尝试再次复制它:
$ find . -mtime -1 -name a -print -exec cp -v {} test/ ';'
./a
'./a' -> 'test/a'
./test/a
cp: './test/a' and 'test/a' are the same file
您可以通过告诉find
不要进入目标目录来避免这种情况。
find . -path ./test -prune -o -mtime -1 -name a -exec cp {} test/ ';'