Como executar o comando na lista de nomes de arquivos em um arquivo?

11

Eu listei os nomes dos arquivos que devem ser excluídos em um arquivo. Como posso passar o arquivo para o comando rm para que ele seja excluído um por um.

    
por monu 21.02.2013 / 07:53

2 respostas

10

Se você tiver um arquivo por linha, uma maneira de fazer isso é:

tr '\n' '
tr '\n' '%pre%' < list_of_files_to_be_deleted.txt | xargs -0 -r rm --
' < list_of_files_to_be_deleted.txt | xargs -0 -r rm --

A lista de arquivos é fornecida como entrada para o comando tr , que altera o separador de arquivos de alimentação de linha para o byte nulo e o comando xargs lê arquivos separados por bytes nulos na entrada e ativa o comando rm com os arquivos anexados como argumentos.

    
por 21.02.2013 / 08:01
5

A resposta acima é boa porque se esforça muito para lidar com nomes de arquivos com espaços e "caracteres estranhos". Mas a maneira mais simples, se os nomes dos arquivos são são, é apenas (aviso, bashismo!):

rm $(< /the/file/with/names)

Para shell normal:

rm 'cat /the/file/with/names'
    
por 21.02.2013 / 20:47

Tags