Esse problema ocorre porque find
procurará arquivos sequencialmente. Por exemplo, considere este layout de diretório:
$ tree
.
├── 02_2017
│ └── foo.txt
└── bar.txt
Quando você executar o comando find
, ele encontrará primeiro os arquivos correspondentes no diretório de nível superior, para encontrar bar.txt
e movê-lo para 02_2017
. Então, ele irá para 02_2017
e procurará arquivos lá. Existe agora um arquivo 02_2017/bar.txt
, então ele tenta copiá-lo para si mesmo, falha e imprime essa mensagem de erro.
Isso não é realmente um problema. Seu script está funcionando bem e está fazendo seu trabalho corretamente. Você pode ignorar com segurança o erro.
Se isso realmente incomoda você, você pode corrigir adicionando -maxdepth 1
ao seu comando find
para que ele não caia em subdiretórios:
find ./ -type f -name '*.txt' -newermt $date1 ! -newermt $date2 -exec cp {} $date \;
Ou, melhor ainda, excluindo o diretório de destino do caminho de pesquisa do find:
find ./ -type f -not -path './02_2017/*' -name '*.txt' -newermt $date1 ! -newermt $date2 -exec cp {} $date \;