Suponha que os números 23, 13, 2, 1978, 43, 34, 90, 9, 123, 432, 9876 e 12345 precisam ser alinhados com zeros a esquerda e ordenados, como proceder?
Listagem apenas com os Números:
echo "23, 13, 2, 1978, 43, 34, 90, 9, 123, 432, 9876 e 12345"| tr -d ',e'|tr -s ' '
23 13 2 1978 43 34 90 9 123 432 9876 12345
Transformar a listagem em lista:
echo "23, 13, 2, 1978, 43, 34, 90, 9, 123, 432, 9876 e 12345"| tr -d ',e'|tr -s ' '|sed 's/ / \n/g'
23
13
2
1978
43
34
90
9
123
432
9876
12345
Ordenar a Lista:
echo "23, 13, 2, 1978, 43, 34, 90, 9, 123, 432, 9876 e 12345"| tr -d ',e'|tr -s ' '|sed 's/ / \n/g'|sort
123Observe que os números não estão na ordem numérica.
12345
13
1978
2
23
34
43
432
9
90
9876
Ordenar a Lista Numericamente:
echo "23, 13, 2, 1978, 43, 34, 90, 9, 123, 432, 9876 e 12345"| tr -d ',e'|tr -s ' '|sed 's/ / \n/g'|sort -n
2
9
13
23
34
43
90
123
432
1978
9876
12345
Exibição com Zero a esquerda:
Exemplo:
número 1001 com alinhamento de 5 casas decimais:
printf '%05d\n' 100101001
Exibição da Lista Ordenada com Zeros a esquerda:
echo "23, 13, 2, 1978, 43, 34, 90, 9, 123, 432, 9876 e 12345"| tr -d ',e'|tr -s ' '|sed 's/ / \n/g'|sort -n |while read a; do printf '%05d\n' $a; done
00002
00009
00013
00023
00034
00043
00090
00123
00432
01978
09876
12345
Exemplo:
for ((i=1;i<42;i++));
do
a=$(printf "%04d\n" $i);
echo mkdir -pv ./mcmv/{001929-MF,
00304-MS,000244-MEC,042672-MCIDADES,
115257-SAC,002846-MT,042670-MI,092748-SEP,
001801-SDH,068487-SPM,002852-MME,001927-MMA,
002837-CC-PR,036670-ME,000316-MJ,017125-MDA,
003159-MC,001988-MCTI,000263-MRE,001945-MDS,
000014-MAPA,003162-MDIC,041066-MD,072084-MTUR,
091624-SECOM-PR}/`echo $a`/{carga,fotos}/{old,logs};
done
O comando acima cria 7201 diretórios em arvore, como o exemplo abaixo:
|-001929-MF
|--0001
|---carga
|----old
|----logs
|---fotos
|----old
|----logs
|--0002
|---carga
|----old
|----logs
|---fotos
|----old
|----logs
.
.
.
|--0041
|---carga
|----old
|----logs
|---fotos
|----old
|----logs
Comentários