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.
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?
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.