Como aplicar um comando a uma lista de arquivos com espaços produzidos por outro comando?

0

Digamos que eu tenha um comando canalizado como este:

$ ls -t|tail -n 10

Agora, se eu quiser remover todos os arquivos produzidos pelo comando acima, se os arquivos tiverem espaços, não funcionará:

$ rm 'ls -t|tail -n 10'
# assuming the first response is 'The File Name', I get:
rm: cannot remove ‘The’: No such file or directory
rm: cannot remove ‘File’: No such file or directory
rm: cannot remove ‘Name’: No such file or directory

Como posso citar os nomes dos arquivos antes de enviá-los para o rm?

    
por TheOne 22.01.2013 / 17:11

1 resposta

1

Tente este:

command that outputs files with spaces | while IFS= read -r file
do
  rm "$file"
done

A entrada será dividida em novas linhas, portanto, arquivos com novas linhas no nome não funcionarão. Citar nomes com espaços funciona sem problemas.

    
por 22.01.2013 / 17:13

Tags