Regextype de línea de comando para eliminar archivos

Regextype de línea de comando para eliminar archivos

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 echocomando y, una vez que esté seguro de que enumera los archivos correctos, utilícelo rmen 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 -printuna -deletevez 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 -printpor -deletecuando 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

información relacionada