Найдите пронумерованные подкаталоги под номером X и удалите их - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть папка 'masterfolder', в которой есть подпапки с нумерованной схемой именования:

\masterfolder\S01 \masterfolder\S02 \masterfolder\S03 \masterfolder\S04 \masterfolder\S05

Теперь я хочу найти и удалить все папки ниже определенного номера, например S03. Это означает, что S03, S04, S05 и т. Д. Не должны быть удалены, S01 и S02 должны быть удалены.

Обычно я использую эту команду для поиска и удаления определенной папки:

find "/mnt/USBDRIVE/masterfolder" -type d -name "S02" -exec rm -rf '{}' \;

Я пытался найти решение самостоятельно, но единственный метод, который я нашел, - это удалить все, кроме номера, который я хочу сохранить:

find "/mnt/USBDRIVE/masterfolder" -mindepth 1 -maxdepth 1 -type d -not -name "S03" -exec rm -rf '{}' \;

Это сохранит S03, но удалит все остальные. Я хочу сохранить S03 и любую другую папку с большим номером, чем S03.

Любые идеи приветствуются.

1 Ответ

0 голосов
/ 15 сентября 2018

Есть много способов решить эту проблему.

Поскольку ваши числа дополняются нулями, самый простой способ - просто отправить список каталогов в файл, отсортированный по алфавиту. Затем удалите те, которые вы хотите игнорировать (они все будут вместе), сделайте глобальное изменение, добавив «rm» в начало каждой строки, и запустите файл как скрипт.

Это займет у вас менее 30 секунд. Любое программное решение займет больше времени.

...