Exclui uma lista de diretórios armazenados em um arquivo

2

Eu tenho uma lista de nomes de diretórios no seguinte caminho

/home/list/list.txt

Os diretórios estão todos no caminho a seguir

/home/directory/

Como posso excluir os diretórios contidos na lista usando a linha de comando?

    
por steve 19.08.2015 / 17:28

4 respostas

5

Supondo que os diretórios estejam vazios, eu diria ...

while IFS= read -r directory
do
   #rmdir /home/directory/"$directory"
   echo rmdir /home/directory/"$directory"
done < /home/list/list.txt

E quando você vir o echo funcionar como deseja, descomente o rmdir .

Isso faz um loop sequencial através do conteúdo de /home/list/list.txt e armazena o valor de cada linha em $directory . Em seguida, ele executa a ação rmdir .

Observe o uso de aspas duplas para evitar erros se os nomes contiverem espaços. Os IFS= e read -r são bem explicados em Como eu posso ler um arquivo (fluxo de dados, variável) linha a linha ( e / ou campo a campo)? ,

Se os diretórios não estiverem vazios e você estiver completamente certo sobre o que está fazendo, use rm -r . Você pode então adicionar -f para forçar (novamente: se tiver certeza) ou -v para ter uma saída detalhada.

    
por fedorqui 19.08.2015 / 17:30
7

comece com

xargs -I{} echo rm -fr /home/directory/{} </home/list/list.txt

que apenas echo é o comando para fazer, e se ok remover o eco.

    
por meuh 19.08.2015 / 17:50
2

Você está bem com o Python?

from os import system
lines = open("/home/list/list.txt", 'rb').readlines()
for i in range(0, len(lines)):
    currentline = lines[i]
    rmcommand = "rm -r " + currentline.strip('\n')
    system(rmcommand)

Isso levará a lista, dividirá as linhas em uma matriz e, em seguida, emitirá um comando para cada índice na matriz. O strip é se livrar do caractere de nova linha à direita, se existir.

    
por user323419 19.08.2015 / 19:12
1

Usando awk em uma única linha simples

awk '{system ("rm -r /home/directory/\""$0"\"")}' /home/list/list.txt

O comando itera sobre as entradas no arquivo de entrada e cria o comando rm via system .

    
por A.B. 19.08.2015 / 17:36