eliminar "~" del nombre del archivo

eliminar "~" del nombre del archivo

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.jpgy 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.

información relacionada