Como posso obter a saída “find” para que eu possa copiá-la e colá-la em outros comandos?

1

É possível imprimir find caminhos de saída de tal forma que você possa copiá-los e colá-los? Eles já terão escapado adequadamente para que você possa executar comandos nesse caminho? Normalmente eu tenho que colocar aspas em torno deles.

Exemplo.

$ find -iname "*Resume 2004*doc~"
./Career/No Longer Needed/Microsoft Resume 2004.doc
$ rm ./Career/No Longer Needed/Microsoft Resume 2004.doc
ERROR: No such file: ./Career/No
$ rm "./Career/No Longer Needed/Microsoft Resume 2004.doc"

Nota: não quero executar rm "automaticamente" via -exec ou xargs . Eu sei como fazer isso.

    
por Sridhar-Sarnobat 27.09.2014 / 02:16

2 respostas

0

find tem um argumento -exec .

Se você está tentando excluir find output, apenas use este comando:

find -iname "*Resume 2004*doc~" -exec rm -f {} \;
    
por 08.12.2014 / 13:38
0

O comando rm não funciona, já que o nome do arquivo inclui espaços em branco, portanto, é necessário citar o arquivo ou usar a barra invertida sem aspas, assim:

rm ./Career/No\ Longer\ Needed/Microsoft\ Resume\ 2004.doc

Assim, você não pode realmente imprimir o caminho e excluí-lo copiando-o porque precisa adicionar citações ou barras invertidas, mas o que você pode fazer é imprimir o inode do arquivo, bem com o comando find e deletá-lo usando o número do inode assim:

find . -type f -name "*Resume 2004*doc~" -printf '%p %i\n'

e você recebe de volta o seu inode, digamos 1234567 e você o exclue assim:

find . -inum 1234567 -exec rm -fi {} \;
    
por 08.12.2014 / 13:49