cd ~/foo
for i in *-file; do
num=${i%-file}
padnum=$(printf '%03d' $num)
mv -v "$i" "${padnum}-file"
done
Algo ao longo destas linhas deve fazê-lo. Modifique conforme necessário para padrões e diretórios precisos.
Acabei de escrever um script que gerou centenas de arquivos e os armazenou em um diretório ~/foo . Esses arquivos são ~/foo/X-file , em que X varia de X=1 a X=900 . Meu problema é que eu gostaria de ver esses arquivos em ordem numérica, mas os arquivos não são preenchidos com zeros. Portanto, o diretório contém 17-file e 544-file , por exemplo. Existe uma maneira de preencher esses arquivos com zeros à esquerda?
cd ~/foo
for i in *-file; do
num=${i%-file}
padnum=$(printf '%03d' $num)
mv -v "$i" "${padnum}-file"
done
Algo ao longo destas linhas deve fazê-lo. Modifique conforme necessário para padrões e diretórios precisos.
Se você tiver o utilitário Perl rename (geralmente chamado de prename , não o mais primitivo do Linux):
rename -v 's/^([0-9]-)/00$1/; s/^([0-9]{2}-)/0$1/' *-file
My problem is that I would like to view these files in numerical order
Teste ls -v (claro que você também pode combiná-lo com outras opções de que você gosta, como ls -lv para obter listagens longas).
De ls (1) :
-v natural sort of (version) numbers within text
Exemplo:
$ ls
1 10 11 2 20 21 3 30 31
$ ls -v
1 2 3 10 11 20 21 30 31
$
O seguinte deve funcionar no bash se for executado no diretório que você gosta.
for x in [0-9]*-file ; do mv $x 'printf %03d-%s ${x%-*} ${x##*-}' ; done