remova "~" do nome do arquivo

remova "~" do nome do arquivo

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

informação relacionada