Tengo un montón de archivos, toda la materia nombrado como 1.jpg
, 2.jpg
, 3.jpg
, y así sucesivamente hasta que 1439.jpg
, sin embargo, tengo un problema con uno de mis proyectos y alfabetizar. Por lo general, irá en el orden1.jpg
, 10.jpg
, 11.jpg
y así sucesivamente.
Lo que necesito es alguna forma de nombrar los archivos para que estén en el formato como 00001.jpg
hasta el final 01439.jpg
.
¿Cómo podría hacer esto de manera rápida y eficiente?
scripts
batch-rename
Kaz Wolfe
fuente
fuente
ls -v
unix.stackexchange.com/questions/33909/…pyrenamer
.Respuestas:
Ubuntu viene con un script llamado
rename
. Es solo un pequeño script de Perl que presenta una serie de potentes funciones de cambio de nombre masivo, pero la mejor (en este caso) es la capacidad de ejecutar Perl durante el reemplazo. El resultado es una solución verdaderamente compacta:Esto es similar a las
printf
respuestas de otros estilos aquí, pero todo se maneja por nosotros. El código anterior es para un número de 5 dígitos (incluido un número variable de ceros a la izquierda).Buscará y reemplazará la primera cadena de números que encuentre con una versión con relleno de cero y dejará el resto del nombre de archivo solo. Esto significa que no tiene que preocuparse demasiado por cargar cualquier extensión o prefijo.
Nota: esto no es completamente portátil. Muchas distribuciones usan
rename.ul
delutil-linux
paquete como surename
binario predeterminado . Esta es una alternativa significativamente atrofiada (verman rename.ul
) que no entenderá lo anterior. Si desea esto en una plataforma que no utiliza el cambio de nombre de Perl, descubra cómo instalarlo primero.Y aquí hay un arnés de prueba:
Y un ejemplo de prefijos (no estamos haciendo nada diferente):
fuente
sprintf
en Perl se comporta de manera similar asprintf
en otros idiomas.Editar
Explicación:
if [[ $f =~ [0-9]+\. ]]
se asegura de que solo se renombren los archivos cuyos nombres son números (seguidos de un punto).printf "%.5d" NUMBER
agrega los ceros a la izquierda"${f%.*}"
corta la extensión (.jpg) y deja solo el número.jpg
después de la segunda tecla de retroceso agrega la extensión de archivo nuevamente.Tenga en cuenta que esto solo funcionará en los nombres de archivos que son números. Los ceros iniciales del margen izquierdo a archivos no numerados requerirían un formato diferente.
Si quieres experimentar, prueba este comando:
Editar 2
El comando se hizo más seguro al asegurarse de que solo se renombraran los nombres de archivo que son números. Tenga en cuenta que los archivos preexistentes nombrados como 00001.jpg se sobrescribirán.
fuente
Debajo de un script de Python.
El script agrega ceros a la izquierda hasta el número definido de dígitos. Si el nombre es más grande que eso, el archivo (nombre) está intacto.
La combinación de diferentes extensiones en una acción de cambio de nombre puede agregar algo de comodidad. Para agregar extensiones, simplemente agréguelas a la tupla, por ejemplo
extensions = (".jpg", ".jpeg", ".tiff")
.Copie el texto en un archivo vacío, guárdelo como
rename.py
, ingrese la ruta correcta al directorio de archivos (sourcedir
), el número de dígitos que desea que tengan los nuevos nombres (number_ofdigits
) y las extensiones de archivo para cambiar el nombre (extensions
)Ejecútelo con el comando:
La secuencia de comandos:
editar:
Debajo de una versión ligeramente mejorada. Determina automáticamente el nombre más largo en el directorio y agrega ceros a la longitud del nombre más largo.
ejemplo:
se convierte en:
No es necesario establecer el número de dígitos.
fuente
Hay una utilidad de cambio de nombre implementada en Perl que hace esto muy fácil:
El primer argumento es una expresión de Perl que se evalúa para cada nombre de archivo.
fuente
Hay una GUI que hará esto llamada pyRenamer que se puede encontrar en los repositorios. Instale, inicie, seleccione su directorio y simplemente configure el 'Patrón de nombre de archivo renombrado' en '{num5}' en la pestaña 'Patrones' y haga clic en el botón 'Cambiar nombre'. También puede obtener una vista previa de lo que sucederá antes de cambiar el nombre.
fuente
shell-scripting
sección, lo que significa que estoy buscando una respuesta de línea de comandos. Además, ¿puede proporcionar más detalles sobre el programa? Por ejemplo, ¿qué formato de patrón es{num5}
?Esto es crudo, ya que no cambia el nombre de forma inteligente, tendrá que pensar en un truco para eso. Pero debería ayudarte a ordenar las cosas.
Actualización: Bueno, tienes una respuesta más completa.
fuente