
У меня есть ряд файлов, которые всегда начинаются как минимум с 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