
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)
s
significa 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.