Eu tenho um shell bash limitado no meu NAS e muitos arquivos que contêm o caractere ~
no nome do arquivo. Por exemplo, tenho um arquivo 2018/10/example~1.jpg
e preciso movê-lo e renomeá-lo para allFiles/2018-10-example_1.jpg
.
Tenho que substituir ~
por _
e adicionar o caminho em -
vez de /
no nome do arquivo.
Você poderia por favor me ajudar?
PS Somente arquivos com extensão .jpg
//.png
.mov
Responder1
Não tenho um QNAP, mas acredito que seu shell seja, na verdade, BusyBox. Isso deve funcionar tanto com o BusyBox quanto com o bash (embora com o bash, você também precise instalar o find+cut+awk):
Supondo que os diretórios do ano (ou seja, "2018") e os diretórios "allFiles" estejam no mesmo nível, e esse nível seja o seu diretório de trabalho atual no seu shell:
find . -name '*.jpg' | cut -c3- | awk '{ newname=$0; gsub(/~/, "_", newname); gsub(/\//, "-", newname); gsub(/^/, "allFiles/", newname); print "mv " $0 " " newname; }'
Isso produzirá um conjunto de comandos para mover todos os seus arquivos .jpg. Revise os comandos para ter certeza de que são razoáveis primeiro. Em seguida, execute-os adicionando "| sh" ao final do comando acima.
Em seguida, substitua '*.jpg' acima por outra extensão de arquivo que você deseja processar e repita.