Risposte:
Lo script corrente utilizza solo un valore decimale - questo ovviamente si traduce nel valore senza zeri iniziali.
Dovresti riempire la stringa con una lunghezza di 4 caratteri, con zeri iniziali. A tale scopo, utilizzare i backtick ``
per ottenere il risultato della chiamata printf printf %04d $j
.
Di conseguenza, dovresti avere il comando completo:
for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done
Fonte: StackOverflow: bash - Riempi gli zeri in una stringa
(Ovviamente vedi anche le ulteriori risposte a questa domanda, se vuoi una soluzione più approfondita, ma questo sicuramente funziona perfettamente per questo caso d'uso.)
Usando bash, l'opzione migliore è:
mkdir {0001..0666}
per creare dir con nome 0001
a 0666
(con zero padding).
Se si desidera che le directory di nome prefix0001suffix
, prefix0002suffix
... allora:
mkdir prefix{0001..0666}suffix
andrà bene.
Se vuoi solo nomi di directory con numeri dispari
mkdir {0001..0666..2}
e così via ... Vedi Brace Expansion nel bash
manuale di riferimento .
Come sottolinea FEichinger, è necessario conoscere in anticipo il numero di directory. Se vuoi una soluzione vicina alla tua, ma davvero sicura e usando un linguaggio bash più moderno:
for i in *.jpg; do ((++j)); mkdir $(printf "%04d" $j) ; done