Найдите пронумерованные подкаталоги под номером X и удалите их

У меня есть папка '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 ответ

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

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

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

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