
Tengo una serie de archivos que siempre comienzan con al menos 5 valores numéricos como:
85966_88.jpg
Usando esta respuesta aprendíusar find y regextype en un comando para eliminar archivos como este:
find . -regextype posix-extended -iregex './a_[0-9]{6}' -execdir bash -c '[[ ${1##./a_} > 000750 ]] && echo $1' "removing: " {} \;
Modifiqué este comando para adaptarlo a mis necesidades de esta manera:
find . -regextype posix-extended -iregex './[0-9]{5}' -execdir bash -c '[[ ${1##./} > 000001 ]] && echo $1' "removing: " {} \;
Ejecuto el comando y no borra los archivos. No puedo encontrar la manera de eliminar todos los .jpg que tienen valores numéricos en los primeros 5 dígitos y luego _
Respuesta1
En primer lugar, el comandocomo esta escritono elimina nada: como se indica en la respuesta que vinculó
Pruebe esto con el
echo
comando y, una vez que esté seguro de que enumera los archivos correctos, utilícelorm
en su lugar.
En segundo lugar, es demasiado complicado para su caso, ya que no desea limitar la eliminación a un rango o subconjunto de coincidencias (por lo que no necesita las pruebas de Shell); simplemente podría hacer
find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print
(para probar) y reemplácelo -print
una -delete
vez que esté satisfecho de que funciona correctamente.
Sin embargo, incluso las expresiones regulares parecen demasiado complicadas: una simple coincidencia global en realidad requiere menos escritura:
find -name '[0-9][0-9][0-9][0-9][0-9]_*.jpg' -print
(nuevamente, reemplace -print
por -delete
cuando esté seguro).
Si no necesita realizar una búsqueda recursiva, un simple shell global debería funcionar:
rm -i [0-9][0-9][0-9][0-9][0-9]_*.jpg