Mantém os arquivos de mensagens idênticos usando find

1

Sempre que eu digito isso:

find . -type f -name 'diag*' -mtime +30 -exec mv {} temp_diag \;

no SunOS eu sempre recebo esta mensagem

mv: ./temp_diag/diagnostic.log.68.gz and temp_diag/diagnostic.log.68.gz are identical
mv: ./temp_diag/diagnostic.log.37.gz and temp_diag/diagnostic.log.37.gz are identical
mv: ./temp_diag/diagnostic.log.18.gz and temp_diag/diagnostic.log.18.gz are identical

O comando que usei apenas funciona bem, mas estou preocupado apenas com o significado das mensagens.

    
por dimas 23.07.2013 / 07:19

2 respostas

4

Ao usar este comando, ele irá do caminho atual para baixo. Então você tem algo assim:

dir1
dir1/temp_diag
dir1/temp_diag/file1

Você está executando seu comando de dentro de dir1 e encontra entradas em dir1 / temp_diag e executa

mv ./temp_diag/file1 temp_diag/file1

Você está realmente dizendo ao comando para mover o arquivo para si mesmo.

UPDATE: Se você não tiver subdiretórios com arquivos, poderá adicionar a opção para localizar o maxdepth 1. Então:

find . -type f -name 'diag*' -maxdepth 1 -mtime +30 -exec mv {} temp_diag \;

ou se você tiver subdiretórios, mas não quiser incluir temp_diag:

find . -path ./temp_diag -prune -o -print -type f -name 'diag*' -mtime +30 -exec mv {} temp_diag\;
    
por 23.07.2013 / 07:29
1

Seu comando find está percorrendo o diretório temp_diag, localizando um arquivo, e você está tentando mv o arquivo em si mesmo.

    
por 23.07.2013 / 07:28

Tags