varios renombrar nombre masivo extension comando cambiar archivos archivo linux timestamp imap sync

renombrar - linux cambiar extension a varios archivos



¿Cómo cambio el nombre de varios archivos que comienzan con una marca de tiempo de Unix? Problema de imapsync (1)

Intenta hacer esto con rename :

$ rename -n ''s/^/d+/(stat($_))[9]/e'' [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]*

desde el prompt de shell Es muy útil, puedes poner algún código perl como lo hago en una sustitución por stat con el modificador e .

Puede eliminar el -n (interruptor de modo de funcionamiento en seco) cuando sus pruebas se vuelvan válidas.

warning http://pix.toile-libre.org/upload/original/1377510865.png Hay otras herramientas con el mismo nombre que pueden o no ser capaces de hacer esto, así que ten cuidado.

Si ejecuta el siguiente comando ( linux )

$ file $(readlink -f $(type -p rename))

y tienes un resultado como

.../rename: Perl script, ASCII text executable

y no contiene:

ELF

entonces esta parece ser la herramienta correcta =)

De lo contrario, para que sea el predeterminado (normalmente el caso) en Debian y derivados como Ubuntu :

$ sudo update-alternatives --set rename /path/to/rename

(reemplace /path/to/rename el /path/to/rename a la ruta del comando de perl''s rename de su perl''s rename .

Si no tiene este comando, busque en su administrador de paquetes para instalarlo o hacerlo manualmente

Por último, pero no menos importante, esta herramienta fue escrita originalmente por Larry Wall, el padre de Perl.

Editar

Como se indica aquí , si tiene el siguiente error:

Lista de argumentos demasiado larga

Luego usa find esta manera:

find -type f -name ''[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]*'' -print0| xargs -0 -n1 rename -n ''s/^/d+/(stat($_))[9]/e''

( -n1 sin -n1 , eso debería funcionar también)

No obtuve el script de imapsync para cambiar el nombre de los nombres de archivo maildir a trabajar. : - /

Entonces lo que necesito es:

Tengo una carpeta de correo con miles de correos. Después de importar esos correos electrónicos a mi nuevo servidor, el nombre de archivo de los correos electrónicos tiene la fecha de creación como una marca de tiempo Unix en el nombre del archivo, pero el indicador de fecha de creación del archivo es la fecha de recepción correcta del correo electrónico.

ls -l para un archivo se ve así:

-rw-r--r-- 1 popuser popuser 1350432 2013-03-16 07:22 1363563215.M562903P29332V0000000000000802I0000000000AEA46B_527.my-domain.org,S=1350432:2,S

Entonces, lo que el script tiene que hacer es: 1) leer la fecha / hora de creación del archivo (encontré el comando

stat -c %y filename

Haz esto)

2) convertir la fecha / hora de 1) a una marca de tiempo de Unix

date -d "2013-03-17 11:19:01.000000000 +0100" "+%s"

3) elimine los primeros 10 dígitos (indicación de fecha y hora incorrecta) del nombre de archivo y nosotros la fecha y hora de 2) en su lugar

4) hacer esto para todos los archivos en un directorio específico

Soy un recién llegado en Linux secuencias de comandos de Linux , ¿alguien puede ayudarme con este script?

¡Gracias!