Я хочу получить определенные файлы, а затем cp
результат в другой каталог. Все работает, но моя команда, кажется, выполняется второй раз.
Например, у меня есть файл a
и я хочу cp
его в поддиректорию test/
, поэтому я запускаю:
find . -mtime -1 -name a -exec cp {} test/ ';'
Мой файл копируется в поддиректорию так, как я хотел, но потом получаю сообщение об ошибке:
cp: './test/a' and 'test/a' are the same file
У вас есть состояние гонки - сначала 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/ ';'