Remover diretórios de um arquivo com lista de diretórios

2

Eu tenho uma lista de diretórios em um arquivo de texto e cada um deles precisa ser excluído. Como posso ler essa lista no comando ( rm -r ou rmdir )?

    
por Adam Schiavone 22.02.2012 / 16:46

2 respostas

4

A solução "mais correta" seria a seguinte:

xargs -I{} rm -r {} < files

Isso chama rm -r , onde {} é substituído pelo nome do arquivo.

Por quê? Piping arquivos com espaços para xargs resultará em argumentos errados. Digamos que sua lista de arquivos seja assim:

/path/to/file 1
/path/to/file_2

Em seguida, xargs rm -r < list.txt tentaria excluir /path/to/file , 1 e /path/to/file_2 . Definitivamente não é o que você quer. Esteja sempre ciente dos espaços nos caminhos ao enviar e receber comandos UNIX / Linux.

    
por 22.02.2012 / 19:45
1

assumindo que você tenha caminhos com espaços no arquivo list.txt - um caminho por linha. Então, a seguinte maneira de invocar xargs preservará espaços:

cat list.txt | xargs -d \n rm -r
    
por 22.02.2012 / 20:08

Tags