cp: './lcommands/cde.pdf' e 'lcommands / cde.pdf' são o mesmo arquivo

2

Estou tentando aprender sobre o comando find . Eu gostaria de entender o significado deste aviso:

ankit@battlestar:/home/mount_150/studies$ find -iname "*.pdf" -exec cp -ar {} lcommands/  \;
cp: './lcommands/june.pdf' and 'lcommands/june.pdf' are the same file
cp: './lcommands/cde.pdf' and 'lcommands/cde.pdf' are the same file
cp: './lcommands/abc.pdf' and 'lcommands/abc.pdf' are the same file
ankit@battlestar:/home/mount_150/studies$ ls -l lcommands/

Você pode ver aqui o procedimento que eu segui e a estrutura do diretório:

    
por Ankit 04.08.2012 / 11:26

3 respostas

2
O comando

find também procuraria no diretório lcommand por quaisquer instâncias dos arquivos pdf. Como os arquivos foram copiados, os arquivos pdf foram copiados para o diretório; find veio com o aviso.

    
por Ankit 14.08.2012 / 12:33
2

A resposta do Ankid foi aceita, mas está errada. Sim, o find também pesquisa o diretório lcommands , mas como você pode ver na parte de captura de tela antes de localizar, o diretório lcommands já contém os três arquivos pdf antes do comando find ser emitido.

O que realmente acontece: find -exec cp resulta em um comando cp ./lcommands/abc.pdf lcommands/ . Como ./lcommands é exatamente o diretório lcommands ( ./ é o mesmo que ././ , o mesmo que ./././././ , o mesmo que o diretório em que você está), isso resultaria em copiar abc.pdf over propriamente dito, que cp recusa, porque isso resultaria em um arquivo de destino danificado (pelo menos para arquivos maiores que cp do buffer é longo).

Imagine como cp funciona: ele abre o arquivo de origem, lê um trecho, abre o arquivo de destino (truncando-o se existir e não está vazio), grava o trecho de leitura anterior no arquivo de destino; em seguida, ele leria o próximo bloco do arquivo de origem, mas qualquer coisa, exceto o primeiro fragmento, desaparecerá devido à operação de truncamento anterior. Portanto, os autores de cp tentaram detectar qualquer situação em que os arquivos de origem e de destino são os mesmos.

cp não está reclamando, que o arquivo já está lá - seria feliz substituí-lo! Exceto que você também usou a opção -i ou -n . Então a resposta do jpic está correta - mesmo que possa não ser muito detalhada e, portanto, não o ajudou.

O mesmo com os outros dois arquivos pdf.

Para torná-lo o mais claro possível: cp não reclama porque o (s) arquivo (s) de destino existe (s), mas porque é (são) exatamente o (s) arquivo (s) de origem. E é exatamente isso que a mensagem de erro diz.

    
por TomTomTom 11.09.2017 / 14:46
1

É um erro (código de retorno 1), de cp :

>>> cp foo foo
cp: 'foo' and 'foo' are the same file
<<< 11:33.40 Sat Aug 04 2012!~ 
1

O que significa que o cp não fez nada.

    
por jpic 04.08.2012 / 11:34