Найдите пронумерованные подкаталоги под номером 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 секунд. Любое программное решение займет больше времени.