find
tem um argumento -exec
.
Se você está tentando excluir find
output, apenas use este comando:
find -iname "*Resume 2004*doc~" -exec rm -f {} \;
É 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.
find
tem um argumento -exec
.
Se você está tentando excluir find
output, apenas use este comando:
find -iname "*Resume 2004*doc~" -exec rm -f {} \;
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 {} \;
Tags command-line find unix