PDA

View Full Version : [Script] Creare cartelle secondo elenco nomi


psimem
09-01-2013, 11:14
Come da titolo avrei bisogno di una mano per uno script che mi renda automatico un lavoro alquanto noioso: creare una serie di cartelle in base ad un elenco di nomi contenuto in un file di testo.

Ad esempio:
ho un file di testo che contiene:
luca
alessandro
e vorrei creare una serie di cartelle cosi' strutturate:
~/luca_01/luca_aa/
~/luca_01/luca_bb/
~/luca_01/luca_cc/
~/alessandro_01/alessandro_aa/
~/alessandro_01/alessandro_bb/
~/alessandro_01/alessandro_cc/
e' possibile fare una cosa del genere?

devon675
09-01-2013, 12:55
due cicli for e due cicli while o un if a occhio, poi dipende nello specifico che input, quante cartelle, ecc.ecc.

psimem
09-01-2013, 13:30
Ok, i nomi e le relative cartelle saranno una 60ina.
Il ciclo for dovrei riuscire a metterlo insieme, quello che mi blocca e' come estrarre i nomi dal file di testo ed utilizzarli nel ciclo (cat potrebbe essere d'aiuto?).

devon675
09-01-2013, 13:36
sicuramente con "cat" nel bash scripting, poi da li manipoli l'out con "cut" per averlo pulito o con grep\awk, in base all'output. grep e cut sono relativamente facili, mentre awk richiede un pò di applicazione, io stesso consulto il "man" ogni volta che mi serve :D

es. cat file.txt | grep "giovanni" | cut -d...... ecc.

nicfio
09-01-2013, 13:50
Io farei così

cat lista | xargs mkdir -p

:D

M'era sfuggito l'annidamento, lì uno script e d'obbligo. Attendo chi ne sà più di me...

devon675
09-01-2013, 14:05
e con xargs però come le fai annidate?

eclissi83
11-01-2013, 00:33
e' sufficiente un unico ciclo for in realta' con l'unica accortezza di usare il "-" invece che "_", ed e' il seguente:


for i in `cat lista.txt`; do mkdir -p $i-{01,02,03}/$i-{aa,bb,cc}; done


ciao

PS: si presuppone che la lista contenga nomi unici (non doppioni, quindi) ed uno per riga