vez varios renombrar recursivamente programa parte para nombre masivo masivamente extensiones diferente con como comando cambiar archivos ala bash file-rename

bash - varios - renombrar archivos recursivamente linux



Cambie el nombre de varios archivos, pero solo cambie el nombre de una parte del nombre del archivo en Bash (3)

Función

Estoy en OSX y mi bash no viene con el rename como una función incorporada. Creo una función en mi .bash_profile que toma el primer argumento, que es un patrón en el archivo que solo debe coincidir una vez, y no le importa lo que viene después, y reemplaza con el texto del argumento 2.

rename() { for i in $1* do mv "$i" "${i/$1/$2}" done }

Archivos de entrada

test-this.ext test-this.volume001+02.ext test-this.volume002+04.ext test-this.volume003+08.ext test-this.volume004+16.ext test-this.volume005+32.ext test-this.volume006+64.ext test-this.volume007+78.ext

Mando

rename test-this hello-there

Salida

hello-there.ext hello-there.volume001+02.ext hello-there.volume002+04.ext hello-there.volume003+08.ext hello-there.volume004+16.ext hello-there.volume005+32.ext hello-there.volume006+64.ext hello-there.volume007+78.ext

Sé cómo puedo cambiar el nombre de los archivos y demás, pero estoy teniendo problemas con esto.

Solo necesito cambiar el nombre test-this en un bucle for.

test-this.ext test-this.volume001+02.ext test-this.volume002+04.ext test-this.volume003+08.ext test-this.volume004+16.ext test-this.volume005+32.ext test-this.volume006+64.ext test-this.volume007+78.ext


Si tiene todos estos archivos en una carpeta y está en Linux, puede usar:

rename ''s/test-this/REPLACESTRING/g'' *

El resultado será:

REPLACESTRING.ext REPLACESTRING.volume001+02.ext REPLACESTRING.volume002+04.ext ...

rename puede tomar un comando como primer argumento. El comando aquí consta de cuatro partes:

  1. s : bandera para sustituir una cadena con otra cadena,
  2. test-this : la cadena que desea reemplazar,
  3. REPLACESTRING : la cadena con la que desea reemplazar la cadena de búsqueda, y
  4. g : un indicador que indica que todas las coincidencias de la cadena de búsqueda se reemplazarán, es decir, si el nombre del archivo es test-this-abc-test-this.ext será REPLACESTRING-abc-REPLACESTRING.ext .

Consulte man sed para una descripción detallada de las banderas.


Use el rename como se muestra a continuación:

rename test-this foo test-this*

Esto reemplazará a test-this con foo en los nombres de archivo.

Si no tiene un nuevo rename use un ciclo for como se muestra a continuación:

for i in test-this* do mv "$i" "${i/test-this/foo}" done