Eu tenho um diretório e algumas extensões dos arquivos estão em maiúsculas (.JPG) em vez de minúsculas.
Quero garantir que cada arquivo tenha .jpg como extensão. Como eu faria isso a partir de um prompt de shell?
Eu tenho um diretório e algumas extensões dos arquivos estão em maiúsculas (.JPG) em vez de minúsculas.
Quero garantir que cada arquivo tenha .jpg como extensão. Como eu faria isso a partir de um prompt de shell?
Respostas:
Usando a expansão de parâmetros do shell :
for f in *.JPG; do
mv "${f}" "${f%%.JPG}.jpg"
done
Os "
personagens cuidam dos nomes de arquivos que contêm espaços, como costumam fazer as fotografias.
/path/to/*.JPG
. Você está convidado a apresentar a sua própria resposta, é claro :)
Se você pode usar ferramentas externas (não apenas o bash), verifique o rename
comando!
rename .JPG .jpg *
O rename
faz parte util-linux
.
perl
que aceita argumentos diferentes para fazer a mesma coisa.
Eu sugeriria dar uma olhada no mmv
comando. É adequado exatamente para esse tipo de tarefa. No seu cenário, seria:
#> mmv "*.JPG" "#1.jpg"
A página de manual está cheia de exemplos, portanto, não leva tempo para se acostumar.
Nos sistemas Debian , pode ser instalado com:
#> aptitude install mmv
se você não tiver espaços nos nomes de arquivos:
for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done
mv
.