Necesito eliminar recursivamente todos los archivos en todos los subdirectorios donde el nombre de archivo contiene un número seguido de una 'x' seguida de un número, al menos dos veces.
Ejemplo:
Me gustaría eliminar estos archivos:
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
Pero NO quiero eliminar estos archivos:
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
¿Cómo puedo hacer eso (desde el shell bash)
-delete
tampoco-exec rm
trabajado para mí en Bash en Windows. Pero esto hizo:find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
-print0
yxargs -0
, de lo contrario, el comando fallará con los nombres de archivo que contienen espacios o comillas simples. Sin embargo,-delete
y-exec rm
hacer el trabajo en Windows. Si algo no funciona, no se debe a su uso.find
, así que asegúrese de que las utilidades de Unix sean las primerasPATH
.El comando correcto es:
find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'
esto tomará solo archivos con nombres: 'aaa-12x12.jpg', pero no 'aaa-12x12red.jpg'
fuente