найдите файлы из списка файлов и выполните удаление

Я хочу найти много имен файлов, которые записаны в текстовом файле. Как я мог передать этот текстовый файл find команда (или другая команда?) для нахождения каждой строки его (каждая строка является именем файла)? Моя цель состоит в том, чтобы найти все имена файлов и удалить их.

find /path/to/my/files -name "list-from-file.txt" -delete 
-3
задан 29 August 2017 в 15:25

4 ответа

Если существует файл (давайте назовем его filenames.txt) со списком имен файлов Вы хотите удалить, например.

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

Вы просто должны cd к папке, где относительные пути, содержавшиеся в файле, допустимы и дают команду:

< path/to/filenames.txt xargs echo rm

Вы заметите, что это просто перечислит rm команды. Это - проверка защиты. Удалить echo запустить удаление файла на Ваш собственный риск!

Заметьте, что пути будут непосредственно переданы rm без дополнительных мер, таким образом, последняя строка в моем примере будет работать полным путем.

4
ответ дан 2 November 2019 в 08:39

Использовать find с xargs если у Вас есть только имя файлов, сохраненное в myTextFile:

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

если бы Вы знаете, что все файлы находятся в одном определенном каталоге, или им включали их путь, то команда была бы:

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

Или простое использование bash сценарий.

while IFS='\n' read -r FILE
do
    find /src -type f -name "$FILE" #-delete
done < /path/to/myTextFile
4
ответ дан 2 November 2019 в 08:39

Продвиньте свой myTextFile к некоторое время циклу с read команда:

while IFS= read -r f; do
   test -f "$f" && rm -f "$f"
done < myTextFile
2
ответ дан 2 November 2019 в 08:39
for i in `less list-from-file.txt`; do rm $i;done

где less откроет файл list-from-file.txt

Так, каждая строка файла list-from-file.txt находится в $i

Наконец, rm команда удалит файл.

-2
ответ дан 2 November 2019 в 08:39

Другие вопросы по тегам:

Похожие вопросы: