Удалить список каталогов, хранящихся в файле

У меня есть список имен каталогов по следующему пути

/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,

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