bash masivo ¿Cambiar el nombre de todos los archivos en el directorio de $ filename_h a $ filename_half?




comando rename linux (8)

Tenía una pregunta similar: en el manual, describe el cambio de nombre como

rename [option] expression replacement file

para que puedas usarlo de esta manera

rename _h _half *.png

En el código: '_h' es la expresión que estás buscando. '_half' es el patrón con el que desea reemplazar. '* .png' es el rango de archivos que está buscando para sus posibles archivos de destino.

Espero que esto pueda ayudar c:

Muerto simple.

Cómo cambio el nombre

05_h.png
06_h.png

a

05_half.png
06_half.png

Al menos, creo que es simple, pero es difícil buscar este tipo de cosas a menos que ya lo sepas.

Gracias....


Answer #1

Otro enfoque puede ser manualmente usando la opción de cambio de nombre por lotes

Haga clic derecho en el archivo -> Comandos de archivos personalizados -> Cambiar nombre por lotes y puede reemplazar h. con la mitad

Esto funcionará para la interfaz gráfica de usuario basada en Linux utilizando WinSCP, etc.


Answer #2
for i in *_h.png ; do
  mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done

Answer #3

Use la utilidad de rename escrita en perl. Puede ser que no esté disponible por defecto, aunque ...

$ touch 0{5..6}_h.png

$ ls
05_h.png  06_h.png

$ rename 's/h/half/' *.png

$ ls
05_half.png  06_half.png

Answer #4
for f in *.png; do
  fnew=`echo $f | sed 's/_h.png/_half.png/'`
  mv $f $fnew
done

Answer #5

Intenta rename comando:

rename 's/_h.png/_half.png/' *.png

Actualizar:

uso de ejemplo:

crea un contenido

$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls 
one_h.png  three_h.png  two_h.png

solución de prueba:

$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png  three_half.png  two_half.png

Answer #6

¿Estás buscando una solución pura bash? Hay muchos enfoques, pero aquí hay uno.

for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done

Esto supone que los únicos archivos en el directorio actual que terminan en _h.png son aquellos a los que desea cambiar el nombre.

Mucho más específicamente

for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}"

Suponiendo que esos dos ejemplos son los únicos. archivos.

Para el caso general, el cambio de nombre de archivo has been covered before .


Answer #7

Use la utilidad de rename :

[email protected]:/tmp/foo $ touch 05_h.png 06_h.png
[email protected]:/tmp/foo $ rename 's/_h/_half/' * 
[email protected]:/tmp/foo $ ls -l
total 0
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 05_half.png
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 06_half.png




shell