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