Não consigo rodar a combinação de comandos find, xargs e rm
5 respostasResolvido
ubuntu
R
Renan_Monteiro
Boa tarde,
Não estou conseguindo rodar o comando find em conjunto com o xargs. Já executei em uma outra pasta e consegui, mas justo na pasta que eu preciso não. Segue abaixo a saída do comando:
Qual a saída do find? Provavelmente ele está retornando alguma coisa “a mais” que ao ser passado para rm dá erro (mais ou menos como isso aqui, que não é exatamente o mesmo caso, mas eu chutaria que é algo similar).
R
Renan_Monteiro
Então, mas eu rodei esse comando em outra pasta e consegui. Vou te mandar a saída do find:
A saída é grande, essa pasta tem bastante arquivos.
R
Renan_Monteiro
Percebi que o nome de alguns arquivos que estou buscando, que são os que começam com “pu”, possuem espaços. Isso atrapalha a execução do comando?
H
Solucao aceita
hugokotsubo1 like
Espaços podem dar problema, mas acho que o erro seria outro (não consegui reproduzir o problema, mas enfim, acho que pode ser isso). Enfim, você pode contornar a questão dos espaços com:
find.-name"pu*"-typef|xargs-Ifilerm-fvfile
Assim, eu digo para o xargs que file deve ser o nome do arquivo (então no comando rm -fv file ele substitui “file” pelo nome do arquivo e já trata corretamente os espaços).
Outra alternativa é:
find.-name"pu*"-typef-print0|xargs-0rm-fv
A opção -print0 imprime os nomes dos arquivos com o NULL CHARACTER entre eles, em vez de imprimir um por linha, como é o normal do find. E a opção -0 faz com que xargs use o NULL CHARACTER como separador. Assim, casos os nomes dos arquivos tenham espaços, new lines , aspas, etc, estes serão interpretados e passados corretamente para rm.