cambie el nombre de los archivos de forma recursiva agregando una cadena al comienzo del archivo en Linux

cambie el nombre de los archivos de forma recursiva agregando una cadena al comienzo del archivo en Linux

Probé muchos comandos. Nadie hizo el trabajo. ¿Cómo usar renombrar/buscar o algo más para agregar una cadena al inicio de los archivos en las subcarpetas, de forma repetitiva?

ejemplofile.jpg --> image_file.jpg

find . -name '*.jpg'  -exec  rename  -n "s/^/image_/" *.jpg {} +
for pic in '*.jpg' ; do  rename  -n "s/^/image_/ ${pic}"; done
find . -name '*.jpg'  -exec rename -n "s/^/image_/ .jpg '{}' \;
find "/files/" -type f -exec rename 's/^/image_/' '{}' \;
find . -name '*.jpg' -type f -exec bash -c 'echo "$1" "${1/^/image_/}"' -- {} \;

por qué esto diceInvalid cross-device link find . -name '*.jpg' -execdir rename 's:./:/image_:' {} +

Respuesta1

¡Lo encontré! Este comando agrega una cadena al principio de cada archivo de forma recursiva en todos los subdirectorios. Todavía no sé por qué funciona, pero funciona. Retire '-n' para obtener resultados reales.

find . -name '*.jpg' -execdir rename -n 's:./:./image_:' {} +

ejemplo de resultado:rename(./28652316400.jpg, ./image_28652316400.jpg)

  • ssignifica sustituto.

  • :Según tengo entendido, significa ir a la primera aparición de "." luego, mientras iba a ".", luego sustitúyalo por "image_" y salga. (aunque puedo estar equivocado). LeeraquíMás información sobre el significado de dos puntos en bash y scripts.

información relacionada