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}; doneO 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