Командная строка regextype для удаления файлов

Командная строка regextype для удаления файлов

У меня есть ряд файлов, которые всегда начинаются как минимум с 5 числовых значений, например:

85966_88.jpg

Используя этот ответ я узналчтобы использовать find и regextype в команде для удаления файлов, например:

find . -regextype posix-extended -iregex './a_[0-9]{6}' -execdir bash -c '[[ ${1##./a_} > 000750 ]] && echo $1' "removing: " {} \;

Я изменил эту команду в соответствии со своими потребностями следующим образом:

find . -regextype posix-extended -iregex './[0-9]{5}' -execdir bash -c '[[ ${1##./} > 000001 ]] && echo $1' "removing: " {} \;

Я выполняю команду, но она не удаляет файлы. Я не могу понять, как удалить все .jpg, которые имеют числовые значения в первых 5 цифрах, а затем _

решение1

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

Проверьте это с помощью echoкоманды, и как только вы убедитесь, что она выводит правильный список файлов, используйте rmвместо нее.

Во-вторых, это слишком сложно для вашего случая, поскольку вы не хотите ограничивать удаление диапазоном или подмножеством совпадений (поэтому вам не нужны тесты оболочки) — вы можете просто сделать

find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print

(для проверки) и замените на, -printкак -deleteтолько убедитесь, что все работает правильно.

Однако даже регулярные выражения кажутся слишком сложными — простое сопоставление с шаблоном на самом деле требует меньше ввода текста:

find -name '[0-9][0-9][0-9][0-9][0-9]_*.jpg' -print

(опять же, замените -printна -delete, если вы уверены).

Если вам не нужен рекурсивный поиск, то подойдет простая команда shell:

rm -i [0-9][0-9][0-9][0-9][0-9]_*.jpg

Связанный контент