Digamos que o diretório que contém esses arquivos seja / path / to / dir
o script que você precisa ficará assim:
start=1
cd "/path/to/dir"
for file in ./*;do
mv "${file}" "FILE_$(printf "%04d" $start)"
start=$((start+1))
done
Em algumas pastas eu tenho muitos arquivos chamados
...
DSC_0002
DSC_0005
DSC_0010
...
Eu quero renomear / renumerar arquivos
FILE_0001
FILE_0002
...
Maby, precisarei começar a numeração NÃO de 0001
tente
ls | awk '{printf "mv %s FILE_%04d\n",$0,NR ;} ' | bash
remove |
bash part para ter uma pré-visualização. NR+666
para começar em 667. %02d
ou %06d
para gerar uma taxa igual a 01 ou 000001. Você pode fazer algo como:
#!/bin/bash
Counter=${1:-1} # It will take the starting number as 1st parameter
WhichDir=${2:-.} # It will take the path as 2nd parameter
# We try to see if the directory exists and if you can go there
(cd "$WhichDir" 2>/dev/null) || { echo "# $WhichDir NOT FOUND " ; exit 1; }
cd "$WhichDir" # it exists and you can go there
shopt -s nullglob # see notes
for f in DSC_* # for all the files in this dir
do
New_Name=$(printf "FILE_%04d.jpg" $Counter)
# change .jpg in what you need
Counter=$(($Counter +1)) # increase the counter
echo "mv -i \"$f\" \"$New_Name\" " # the -i will prompt before overwrite
# mv -i "$f" "$New_Name" # uncomment this line to make it works
exit 0
Notas
mv
pode ser perigoso. Pode sobrescrever arquivos existentes. Pode mover / renomear o diretório. Por isso, é melhor ter uma verificação visual antes de executar um script. Então você pode canalizar sua saída em um shell: ./Myscript.sh
, tudo bem? Se sim, então você pode escrever ./Myscript.sh | /bin/bash
(ou você pode modificá-lo apagando o "eco" ou o comentário na linha seguinte). mv -i
: ele será avisado antes de sobrescrever Se não houver arquivos DSC_*
no diretório atual, o shopt -s nullglob
evitará erros de expansão.
Em geral não é seguro analisar a saída de ls
mesmo se no seu caso, não deve ser um problema real, porque você deve ter para os arquivos o nome padrão da câmera DSC_nnnn.jpg
.
.jpg
ou .tif
ou .raw
) ... altere-a ou apague-a no script para atender às suas necessidades.