Pregunta

Tengo miles de archivos que necesito cambiar de nombre con el siguiente formato. 2008: 09: 18: 17: 45: 48-alfanumeric-alfanumeric.wav la primera parte es una fecha.

Ej. 2008:09:18:17:45:48-703-s.wav

A quiere cambiarle el nombre a:

20080918.174548.703.s.wav

Básicamente para eliminar el ':' y hacer un formato más legible para los humanos y más fácil de dividir.

Sé que cambiar el nombre es lo que estoy buscando, pero la expresión regular no funciona. Estoy escribiendo:

  

renombrar   's / (\ d): (\ d): (\ d): (\ d): (\ d): (\ d) - (.?) - (.?). wav / $ 1 $ 2 $ 3. $ 4 $ 5 $ 6. $ 7. $ 8.wav / '   ./*

¿Fue útil?

Solución

Debe tener en cuenta las multiplicidades:

rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

Otros consejos

rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*
Se debe usar

: en su versión siempre solo coincide con un dígito. Además, no es necesario escapar de:.

Si esto es algo que solo vas a hacer una vez, lo haría de esta manera:

1) ls los archivos en un nuevo archivo: ls datadir > mytmp 2) edite mytmp con su editor favorito.   2a elimine las líneas que no sean archivos de datos que le interesen, como & Quot;. & Quot; y " .. "   2b edite cada línea en un comando de shell para cambiar el nombre del archivo. Me gusta emacs y      construiría una macro de teclado para: recortar el nombre del archivo, insertar " mv " ;, insertar el      nombre de archivo, inserte espacio, inserte el nombre de archivo nuevamente, edite el nombre de archivo insertado en      El formato deseado.   2c guardar 3) ejecutar sh & Lt; mytmp

¡Listo! No es elegante, tedioso si su editor no admite macros o funcionalidades similares, pero se garantiza que funciona y funciona bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top