PDA

View Full Version : [BASH]Script per copiare file in una cartella


ElleGi92
21-02-2012, 18:19
Salve, volevo creare uno script in bash per copiare una serie di cartelle tutto uguali in una cartella creata da me.

Esempio

esiste una serie N di cartelle, tutte con nomi diversi(xxxx1,xxxx2), e dentro queste cartelle
che sempre una cartella con il solito nome Pippo.

Io devo creare una cartella che mi contenga tutte le cartelle pippo, dentro le cartelle xxxx1 ecc.

/xxxx1 -->pippo
/xxxx2 -->pippo

/backup/xxxx1 -->pippo
/backup/xxxx2 -->pippo

mi interessano solo le cartelle pippo, e ovviamente i file dentro le cartelle pippo

Grazie

__ZERO_UNO__
21-02-2012, 20:14
Dalla cartella in cui sono situate le cartelle da copiare



cp -brpt /backup xxxx*

ElleGi92
22-02-2012, 11:24
questo però lo posso fare se il nome delle cartelle xxxx* è uguale, o se comunque è simile. Invece a me serve con una serie di cartelle con nomi sempre diversi.

starmar
22-02-2012, 11:35
Non puoi usare ?



cp -brpt /backup xxxx[0-9]

rootshooter
22-02-2012, 12:17
Forse devi spiegare meglio il problema. Vediamo se ho capito:

Tu hai una serie di cartelle tutte con nome diverso, senza una regola di costruzione del nome, il nome può essere qualunque. Vuoi fare uno script che controlla se le cartelle contengono una sottodirectory con un nome preciso, ad esempio pippo. Se questa condizione è verificata allora lo script deve copiare la cartella in una cartella predefinita.

Quindi supponendo di avere 3 cartelle di nome 'pinco', 'caio', 'tizio'

/pinco/pippo
/caio/giuseppe
/tizio/pippo


lo script deve fare:


cp -R /pinco /backup
cp -R /tizio /backup


E' questo quello che intendi?

Perché se fai l'esempio con xxxx1, xxxx2, fai intendere che tutte le cartelle hanno le prime 4 (in questo caso) lettere uguali

Ma dato che dici che le cartelle contengono sempre pippo, c'è qualcosa che non mi quadra. Se sai dove sono e sai che tutte contengono pippo, e hanno tutte nome diverso, semplicemente

cp -R /*/ /backup


Così copy solo le directory (con tutto il loro contenuto) contenute in / e non i file di /

ElleGi92
22-02-2012, 14:42
si, mi sono espresso male.

Io ho una cartella
/Applications

dentro questa cartella ci sono dei giochi, con nomi diversi

dentro le cartelle dei giochi c'è sempre la cartella Documents

io devo fare il backup dei giochi, e vorrei avere i file disposti nel seguente modo:

FILE ORIGINALE

/Applications/GTA/Documents

FILE BACKUP

/Backup/GTA/Documents

è possibile?

starmar
22-02-2012, 16:14
for file in (ls -R applications/)
do
cp -R $file /BACKUP/$file
done



Potrebbe andare?

ElleGi92
22-02-2012, 16:25
for file in (ls -R applications/)
do
cp -R $file /BACKUP/$file
done



Potrebbe andare?

così però mi salva tutti i file in applicaions, no??

rootshooter
22-02-2012, 18:47
così però mi salva tutti i file in applicaions, no??


Penso di sì. Per lo script non ti so aiutare, però ti posso suggerire come usare cp per fare quello che chiedi


Esempio: ho una cartella Applications in home:


user@ubuntu:~$ ls -R Applications/
Applications/:
GTA W3

Applications/GTA:
Documents file.txt Motore

Applications/GTA/Documents:
prova.txt

Applications/GTA/Motore:

Applications/W3:
Documents

Applications/W3/Documents:
config.xml




Da dentro Applications do il comando:


user@ubuntu:~/Applications$ cp -R --parents */Documents ../backup/


Quindi dentro backup ottieni


user@ubuntu:~$ ls -R backup/

backup/:
GTA W3

backup/GTA:
Documents

backup/GTA/Documents:
prova.txt

backup/W3:
Documents

backup/W3/Documents:
config.xml