Cambiar el nombre de un montón de archivos en Debian
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 / ' ./*
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.