Tengo un shell bash limitado en mi NAS y muchos archivos que contienen el carácter char ~
en el nombre del archivo. Por ejemplo, tengo un archivo 2018/10/example~1.jpg
y tengo que moverlo y cambiarle el nombre a allFiles/2018-10-example_1.jpg
.
Tengo que reemplazar ~
con _
y agregar la ruta con en -
lugar de /
en el nombre del archivo.
¿Me podría ayudar?
PS Sólo archivos con extensión .jpg
//.png
.mov
Respuesta1
No tengo QNAP, pero creo que su shell es en realidad BusyBox. Esto debería funcionar tanto con BusyBox como con bash (aunque con bash, también necesitarías find+cut+awk para instalarlo):
Suponiendo que los directorios del año (es decir, "2018") y los directorios "allFiles" están en el mismo nivel, y ese nivel es su directorio de trabajo actual en su shell:
find . -name '*.jpg' | cut -c3- | awk '{ newname=$0; gsub(/~/, "_", newname); gsub(/\//, "-", newname); gsub(/^/, "allFiles/", newname); print "mv " $0 " " newname; }'
Eso producirá un conjunto de comandos para mover todos sus archivos .jpg. Primero revise los comandos para asegurarse de que sean razonables. Luego ejecútelos agregando "| sh" al final del comando anterior.
Luego reemplace '*.jpg' en lo anterior con otra extensión de archivo que desee procesar y repita.