Unix: как удалить файлы, перечисленные в файле - PullRequest
71 голосов
/ 28 февраля 2011

У меня длинный текстовый файл со списком масок файлов, которые я хочу удалить

Пример:

/tmp/aaa.jpg
/var/www1/*
/var/www/qwerty.php

Мне нужно удалить их. Пробовал rm & # x60; cat 1.txt & # x60; и это говорит, что список слишком длинный.

Нашел эту команду, но когда я проверяю папки из списка, у некоторых из них все еще есть файлы xargs rm <1.txt Ручной вызов rm удаляет файлы из таких папок, поэтому нет проблем с разрешениями.

Ответы [ 12 ]

0 голосов
/ 02 декабря 2017

Это позволит именам файлов иметь пробелы (воспроизводимый пример).

# Select files of interest, here, only text files for ex.
find -type f -exec file {} \; > findresult.txt
grep ": ASCII text$" findresult.txt > textfiles.txt
# leave only the path to the file removing suffix and prefix
sed -i -e 's/:.*$//' textfiles.txt
sed -i -e 's/\.\///' textfiles.txt

#write a script that deletes the files in textfiles.txt
IFS_backup=$IFS
IFS=$(echo "\n\b")
for f in $(cat textfiles.txt); 
do 
rm "$f"; 
done
IFS=$IFS_backup

# save script as "some.sh" and run: sh some.sh
0 голосов
/ 23 января 2014

Здесь вы можете использовать набор папок из deletelist.txt , в то время как избегая также некоторых шаблонов

foreach f (cat deletelist.txt)
    rm -rf ls | egrep -v "needthisfile|*.cpp|*.h"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...