Renombrar imágenes en un orden específico

8

Este es mi problema: tengo una carpeta con 500 imágenes llamada:

1.jpg
2.jpg
3.jpg

y así..

Copié esa carpeta y ahora necesito cambiar el nombre de esas mismas imágenes de 501 a 1000, pero en este orden:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Cuando uso mi comando de cambio de nombre estándar:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Ordena imágenes de 501 a 1000 pero todas están dispersas:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(están en el orden correcto, pero los mezcla)

Sé que es probable que me falte un comando ...

Analgésico
fuente
Use 2 variables i y j mv $ i.jpg $ j.jpg e incremente sus variables.
Pantera
gracias, espero que lo descubras. Busqué pero no encontré la respuesta ..
Painkiller
Por curiosidad, los nombres originales, ¿en qué rango están? ¿Se debe cambiar el nombre del número original a + 500?
Jacob Vlijm
Sí Jacob, tú +500. Estoy tratando de escribir lo que bodhi me dijo, pero no soy tan bueno en lnux, me suicidé para escribir el comando de cambio de nombre anterior: D
Painkiller
Mi pobre computadora portátil está muy ocupada en el cajero automático, pero si no aparece una respuesta satisfactoria (lo cual dudo :)) y si no lo logras, esta noche publicaré un pequeño script de Python.
Jacob Vlijm

Respuestas:

7

Pruebe Thunar , que es el administrador de archivos predeterminado para Xfce. Es muy liviano y viene con una práctica herramienta de cambio de nombre a granel. Puede instalar Thunar ejecutando el siguiente comando en la Terminal:

sudo apt-get install thunar

Probablemente también pueda instalar desde el software Ubuntu.

Cómo usar la utilidad

  1. Una vez que haya instalado Thunar, inicie la utilidad Bulk Rename .
  2. Haga clic en el ícono + y agregue los archivos que desea cambiar de nombre en el orden correcto.
  3. Haga clic en el cuadro desplegable debajo de la lista de archivos seleccionados y seleccione Numeración . Haga clic en el cuadro al lado y seleccione Solo nombre .
  4. En el cuadro " Comenzar con: " ingrese 501, deje el cuadro " Texto: " vacío. Debería ver la vista previa de los cambios en la columna Nuevo nombre .
  5. Para aplicar los cambios, haga clic en el botón Cambiar nombre de archivos .

Además de la numeración, esta utilidad admite las siguientes acciones:

  • Insertar fecha / hora
  • Insertar / Sobrescribir
  • Eliminar personajes
  • Buscar y reemplazar
  • Mayúscula minúscula
pomsky
fuente
Gracias hombre, eres el MVP! Solo tengo que agregar que también necesitaba cambiar el formato de texto a: Texto - Número. (solo en caso de que alguien más use esto)
Painkiller
2
Cambiar de fm a ... realizar una tarea simple me parece excesivo. Escribir una simple extensión de script nautilus lleva menos tiempo que cambiar de fm.
Jacob Vlijm
1
@JacobVlijm Estoy usando Thunar solo para la herramienta de cambio de nombre masivo junto con Nautilus. Thunar es bastante ligero y no parece causar ningún conflicto con Nautilus u otros administradores de archivos.
pomsky
44
Si no desea un segundo administrador de archivos, pyrenamerfunciona perfectamente y es lo que uso para cambiar el nombre de las literas cuando quiero que una GUI compare antes / después de la salida.
Tom Brossman
13

El findcomando encuentra archivos en orden 'directorio' ( 23.jpg, 66.jpg, ...). podrías poner un |sortdespués del hallazgo.

Pero sus métodos son demasiado complejos.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 
Waltinator
fuente
3
for i in {1..500}; do ...Habría sido más fácil.
David Foerster
11

Con renamemando.

rename -n 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg

O en puro bashy usando la expansión de parámetros de shell .

for FILE in *.jpg; do
    mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" 
done 
αғsнιη
fuente
5

Si he entendido bien lo que está preguntando, creo que puede hacerlo utilizando la herramienta predeterminada de cambio de nombre:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

Debe quitar el -vninterruptor (detallado - sin acción) después de la prueba, para que el cambio sea efectivo.

sempaiscuba
fuente
¿Cómo se puede instalar esta herramienta en Ubuntu? por defecto renameestá vinculado prename(1)desde el perlpaquete que no admite todas estas opciones de línea de comandos.
David Foerster
@DavidFoerster Puede que tengas razón. No pude encontrar un enlace de instalación actual (no lo he usado desde aproximadamente 2014). Con la herramienta de cambio de nombre predeterminada, creo que la expresión regex debería ser 's/^(\d+)/sprintf("%d",$1+500)/e'. Actualizaré mi respuesta en consecuencia. Gracias.
sempaiscuba
1
Su respuesta ahora es un duplicado de AFSHIN .
David Foerster
@DavidFoerster Lo siento, ¿qué respuesta? Las únicas otras respuestas que puedo ver son pomsky y waltinator. Tampoco use renombrar (ninguna de las versiones).
sempaiscuba
El enlace directo a la respuesta que quiero decir está incluido en mi comentario anterior.
David Foerster
0

Otra forma de lograr esto con solo el comando shell

cuenta = 1; para i en ls; do mv $ i CN $ ((count ++)). $ {i ## *.}; hecho

aneeshep
fuente