Удалить список каталогов, хранящихся в файле
У меня есть список имен каталогов по следующему пути
/home/list/list.txt
Все каталоги находятся по следующему пути
/home/directory/
Как я могу удалить каталоги, содержащиеся в списке, используя командную строку?
4 ответа
Предположим, что каталоги пусты, я бы сказал...
while IFS= read -r directory
do
#rmdir /home/directory/"$directory"
echo rmdir /home/directory/"$directory"
done < /home/list/list.txt
И как только вы увидите echo работает так, как вы хотите, работайте, раскомментируйте rmdir,
Это последовательно проходит через содержимое /home/list/list.txt и сохраняет значение каждой строки в $directory, Затем он выполняет rmdir действие.
Обратите внимание на использование двойных кавычек для предотвращения ошибок, если имена содержат пробелы. IFS= а также read -r хорошо объяснены в Как я могу прочитать файл (поток данных, переменная) построчно (и / или поле за полем)?,
Если каталоги не пусты, и вы полностью уверены в том, что делаете, используйте rm -r, Вы можете добавить -f заставить (опять же: если вы уверены) или -v иметь подробный вывод.
Начать с
xargs -I{} echo rm -fr /home/directory/{} </home/list/list.txt
который просто выполняет команду echo, и если все в порядке, удалите echo.
Ты в порядке с 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)
Это возьмет список, разделит строки на массив, а затем выдаст команду для каждого индекса в массиве. strip это избавиться от завершающего символа новой строки, если таковой существует.
С помощью awk в простой однострочник
awk '{system ("rm -r /home/directory/\""$0"\"")}' /home/list/list.txt
Команда перебирает записи во входном файле и создает rm команда через system,