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

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

/home/list/list.txt

Каталоги все находятся в следующем пути

/home/directory/

Как удалить каталоги, содержащиеся в список с использованием командной строки?

1
задан 19 August 2015 в 18:53

8 ответов

начните с

xargs -I{} echo rm -fr /home/directory/{} </home/list/list.txt

, который просто выполняет команду echo, и если ok удаляет эхо.

7
ответ дан 23 May 2018 в 18:05
  • 1
    "/home/directory/{}" может быть лучшей идеей. – Hannu 19 August 2015 в 20:24
  • 2
    @Hannu В этом случае они не нужны, поскольку xargs передает имя файла в качестве единственного аргумента в команду. Это не интерпретируется оболочкой. Но вы правы; в общем случае, это хорошая идея для двойных или одиночных котировок args в скриптах. – meuh 19 August 2015 в 20:32
  • 3
    Я бы назвал это «особым случаем», так как норма в bash заключается в том, что неупорядоченный материал получает раскол. ;-) – Hannu 19 August 2015 в 20:34

Вы в порядке с 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)

Это займет список, разделит строки на массив, а затем выдает команду для каждого индекса в массиве. [F2] состоит в том, чтобы избавиться от конечного символа новой строки, если он существует.

2
ответ дан 23 May 2018 в 18:05
  • 1
    Почему бы не пойти полностью python, когда-то началось? например stackoverflow.com/a/6996628/3720510 – Hannu 19 August 2015 в 20:27
  • 2
    Они все еще вызывают системные команды из библиотеки os. Я понял, что этот способ по-прежнему показывает, кто может быть незнаком с python, точная системная команда, к которой большинство привыкли. Кроме того, я поклонник " Python ParKour " и попытайтесь сделать даже простые вещи сложными: P – user 19 August 2015 в 20:31
  • 3
    Честно говоря, это очень неуклюжий скрипт python. Вы можете использовать функции python, которые вызывают unlink напрямую, а также system теперь устарели в пользу subprocess .. – heemayl 19 August 2015 в 21:42

Использование awk в простой однострочной линии

awk '{system ("rm -r /home/directory/\""$0"\"")}' /home/list/list.txt

Команда выполняет итерацию по элементам входного файла и создает команду rm через system.

1
ответ дан 23 May 2018 в 18:05
  • 1
    Я не думаю, что имеет смысл вызвать внешнюю команду, такую ​​как awk, чтобы затем вызвать внешнюю команду system для выполнения чего-то, что bash происходит изначально – fedorqui 19 August 2015 в 18:40

Вы в порядке с 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)

Это займет список, разделит строки на массив, а затем выдает команду для каждого индекса в массиве. [F2] состоит в том, чтобы избавиться от конечного символа новой строки, если он существует.

2
ответ дан 23 May 2018 в 18:05
  • 1
    Они все еще вызывают системные команды из библиотеки os. Я понял, что этот способ по-прежнему показывает, кто может быть незнаком с python, точная системная команда, к которой большинство привыкли. Кроме того, я поклонник " Python ParKour " и попытайтесь сделать даже простые вещи сложными: P – user 19 August 2015 в 20:31

Вы в порядке с 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)

Это займет список, разделит строки на массив, а затем выдает команду для каждого индекса в массиве. [F2] состоит в том, чтобы избавиться от конечного символа новой строки, если он существует.

2
ответ дан 23 May 2018 в 18:05
  • 1
    Они все еще вызывают системные команды из библиотеки os. Я понял, что этот способ по-прежнему показывает, кто может быть незнаком с python, точная системная команда, к которой большинство привыкли. Кроме того, я поклонник " Python ParKour " и попытайтесь сделать даже простые вещи сложными: P – user 19 August 2015 в 20:31

Вы в порядке с 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)

Это займет список, разделит строки на массив, а затем выдает команду для каждого индекса в массиве. [F2] состоит в том, чтобы избавиться от конечного символа новой строки, если он существует.

2
ответ дан 23 May 2018 в 18:05
  • 1
    Они все еще вызывают системные команды из библиотеки os. Я понял, что этот способ по-прежнему показывает, кто может быть незнаком с python, точная системная команда, к которой большинство привыкли. Кроме того, я поклонник " Python ParKour " и попытайтесь сделать даже простые вещи сложными: P – user 19 August 2015 в 20:31

Вы в порядке с 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)

Это займет список, разделит строки на массив, а затем выдает команду для каждого индекса в массиве. [F2] состоит в том, чтобы избавиться от конечного символа новой строки, если он существует.

2
ответ дан 23 May 2018 в 18:05
  • 1
    Они все еще вызывают системные команды из библиотеки os. Я понял, что этот способ по-прежнему показывает, кто может быть незнаком с python, точная системная команда, к которой большинство привыкли. Кроме того, я поклонник " Python ParKour " и попытайтесь сделать даже простые вещи сложными: P – user 19 August 2015 в 20:31

Вы в порядке с 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)

Это займет список, разделит строки на массив, а затем выдает команду для каждого индекса в массиве. [F2] состоит в том, чтобы избавиться от конечного символа новой строки, если он существует.

2
ответ дан 23 May 2018 в 18:05
  • 1
    Они все еще вызывают системные команды из библиотеки os. Я понял, что этот способ по-прежнему показывает, кто может быть незнаком с python, точная системная команда, к которой большинство привыкли. Кроме того, я поклонник " Python ParKour " и попытайтесь сделать даже простые вещи сложными: P – user 19 August 2015 в 20:31

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

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