ciao a tutti.
studio con lena, ma alcuni argomenti ancora non li ho affrontati.
dovrei creare una directory ed al suo interno altre 5000 directory,
numerate progressivamente come segue:
0001
0002
0003
0004
0005
0006
[.....]
5000
sareste cosi' gentili da indicarmi una traccia su cosa studiare? i cicli
della bash li ho visti in modo raffazzonato, pero' le directory che creo
prendono la seguente numerazione:
1
2
3
4
5
6
[..]
10
11
12
13
14
e cosi' via.
la mia necessita' e' avere il numero sequenziale di 4 cifre, con gli zeri
per la parte non significativa.
GRAZIE
> la mia necessita' e' avere il numero sequenziale di 4 cifre, con gli
> zeri per la parte non significativa.
un esempio da mettere nel ciclo:
mkdir `printf "%04d" 1`
crea la dir 0001
man seq
in particolare l'opzione -w
seq -w 5000
> GRAZIE
>
Con bash 4, puoi fare
mkdir {0001..4000}
oppure se hai ancora bash 3
mkdir $(printf '%04d\n' {1..4000})
Nota: in generale questi metodi possono dare problemi. Per questo specifico
problema, dovrebbero essere ok.
> SCRIPTING BASH
se non ho capito male vuoi questo:
# i=1; while [ $i -le 5000 ]; do mkdir `printf %04d $i`; i=$[$i + 1]; done
Ciao,
--
MoonChild
Togliere nospam per l' esatta e-mail
> mkdir $(printf '%04d\n' {1..4000})
>
> Nota: in generale questi metodi possono dare problemi. Per questo
> specifico problema, dovrebbero essere ok.
con quattro o cinquemila file o directory *possono* dare problemi?
Sbagliato!
La frase giusta è: *SICURAMENTE* ci saranno problemi. Anzi i
problemi si incominciano ad avere con già due o trecento argomenti.
Non testato!
Magari provare prima di parlare...
Facciamo un po' di conti (che avresti dovuto fare tu prima di postare, ma
che te lo dico a fa'...forse e' troppo, in fondo siamo su .iniziare). Il
comando e' "mkdir", con 4000 argomenti, di 4 byte ciascuno, piu' un byte di
terminazione per ogni argomento (il \0).
Lunghezza totale della riga di comando: 5*4000 + 5 = 20005.
OMG, BEN 20005 BYTES!!!!!!!!!!!!!!
Oh, e poi bisogna includere anche l'environment:
$ env | wc -c
3918
20005 + 3918 = 23923
OMGOMGOMG!!!!! 23923 BYTES!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Sicuramente sono troppi, verifichiamo:
$ getconf ARG_MAX
2097152
uhm, beh si', pero' magari non sono tutti cosi', proviamo su quel vecchio
server di 6 anni fa con bash-2.05:
$ getconf ARG_MAX
131072
beh dai, ma quello e' un server, proviamo su una macchina virtuale OpenBSD:
$ getconf ARG_MAX
262144
beh...magari i sistemi che hanno un ARG_MAX minore di quello che ci serve in
questo caso esistono, non lo metto in dubbio, ma non credo certo che siano
la maggioranza.
Per cui ribadisco cio' che avevo gia' detto, e sottolineo la frase "PER
QUESTO SPECIFICO PROBLEMA" e "DOVREBBERO essere ok", per coloro a cui magari
sono "inavvertitamente" sfuggite, e che magari vogliono rispondere con
affermazioni generali.
> $ getconf ARG_MAX
> 2097152
Effettivamente pensavo che il limite fosse molto minore,
diciamo 15 o 20 K. Il brutto pero è che anche con 20 K
si possono creare circa 4500 file. Mea culpa
$ mkdir 000{0..9} 00{10..99} 0{100..999} {1000..4000}