localiza arquivos de uma lista de arquivos e executa a exclusão

-3

Eu quero encontrar muitos nomes de arquivos que são escritos em um arquivo de texto. Como eu poderia passar este arquivo de texto para o comando find (ou outro comando?) Para encontrar todas as linhas dele (cada linha é um nome de arquivo)? Meu objetivo é encontrar todos os nomes de arquivos e excluí-los.

find /path/to/my/files -name "list-from-file.txt" -delete 
    
por Josef Klimuk 29.08.2017 / 08:07

4 respostas

4

Se houver um arquivo (vamos chamá-lo filenames.txt ) com a lista de nomes de arquivos que você deseja excluir, por exemplo,

a.txt
subfolder1/b.sh
subfolder2/subfolder3/c.jpg
/home/user/a.txt

você precisa apenas de cd para a pasta onde os caminhos relativos contidos no arquivo são válidos e emitir o comando:

< path/to/filenames.txt xargs echo rm

Você perceberá que isso apenas listará os comandos rm . Esta é uma verificação de segurança. Remova echo para disparar a remoção do arquivo por sua conta e risco!

Observe que os caminhos serão transmitidos diretamente para rm sem medidas adicionais, portanto, a última linha do meu exemplo funcionará como um caminho absoluto.

    
por Melebius 29.08.2017 / 09:28
4

Use find com xargs se você tiver apenas o nome dos arquivos salvo em myTextFile:

xargs -d '\n' -a /path/to/myTextFile -I FILENAME find /src -type f -name FILENAME #-delete

Se você sabe que todos os arquivos estão em um diretório específico ou eles têm seu caminho incluído, então o comando seria:

xargs -d '\n' -a /path/to/myTextFile echo rm -f --

Ou usando o script bash simples.

while IFS='\n' read -r FILE
do
    find /src -type f -name "$FILE" #-delete
done < /path/to/myTextFile
    
por devWeek 29.08.2017 / 09:37
2

Envie seu myTextFile para um loop while com o comando read :

while IFS= read -r f; do
   test -f "$f" && rm -f "$f"
done < myTextFile
    
por RoVo 29.08.2017 / 09:27
-2
for i in 'less list-from-file.txt'; do rm $i;done

onde less abrirá o arquivo list-from-file.txt

Assim, cada linha do arquivo list-from-file.txt está em $i

Por fim, o comando rm removerá o arquivo.

    
por Bandana 15.11.2017 / 19:02