|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 7
|
[Script] Copiare-rinominare-cancellare file
Buongiorno a tutti,
sono nuovo del forum e, in generale, del mondo degli script: scusate in anticipo le ingenuità. Dunque, io ho questa situazione: cartella madre con all'interno molte (3.000) cartelle con nomi diversi da 6 a 9 caratteri (sottocartelle); ognuna delle sottocartelle contiene alcuni file e due sotto-sottocartelle; tutte le sotto-sottocartelle di tutte le sottocartelle hanno come nomi JPEG e TIFF. Uso come sistema operativo OS X. Credo di avere bisogno di 2 script; il primo script dovrebbe eliminare tutte i file delle sottocartelle che non siano nelle sotto-sottocartelle JPEG e TIFF. Il secondo script dovrebbe fare, per ciascuna sottocartella, le seguenti operazioni: 1-copiare il contenuto della sotto-sottocartella JPEG in una cartella di uguale posizione gerarchica dal nome SITO; 2-rinominare tutte i file nella cartella SITO col seguente schema: 'image-x', con x come contatore che parta da 1 (non 0001) e salga; 3-eliminare tutte le sotto-sottocartelle TIFF Grazie in anticipo a tutti e buona giornata, Matteo |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 3
|
Insomma, per quanto riguarda il primo script, tu hai una cartella madre, diciamo "Cartella", in cui ci sono delle sottocartelle, del tipo "XXXXXX[XXX]" (gli ultimi 3 caratteri sono opzionali), che contengono due sottocartelle, "JPEG" e "TIFF", e altri file. Tu vuoi eliminare quindi questi ultimi.
Premetto che non sono molto pratico con i linguaggi di scripting, ma una soluzione potrebbe essere: - Spostare le sotto-sottocartelle "JPEG" e "TIFF" in un'altra posizione; - Eliminare tutto il contenuto della sottocartella; - Ripristinare le due sotto-sottocartelle "JPEG" e "TIFF" (spostandole di nuovo nella posizione iniziale). Quindi con i comandi Codice:
rm -r Codice:
mv Per renderla ancora più semplice, visto che all'inizio bisogna andare nelle sotto-cartelle (e visto che sono 3000 non si può di certo scrivere tutto a mano Fammi sapere che, anche se non so molto di linguaggi di scripting in ambiente Apple, non dovrebbe essere difficile! |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 7
|
Grazie mille per la risposta.
Dunque: no, nella Cartella (madre) non ci sono file, ma sole le sottocartelle. Dimenticavo di dire che nelle sottocartelle, i file da eliminare hanno tutti estensione .TIFF. La soluzione proposta non credo però sia la più vantaggiosa: le sotto-sottocartelle JPEG e TIFF in alcuni casi sono molto pesanti, potendo contenere anche 900 file TIFF di elevata qualità (30-60Mb ciascuno) e temo che facendole spostare due volte il processo sia molto molto lento. Se hai consigli o suggerimenti sarebbero i benvenuti! Grazie ancora e buona giornata, Matteo |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 3
|
Sinceramente non so se funziona perché non ho la possibilità di testarlo in prima persona, ma copiati una delle tante sub-directory della cartella madre e fai:
Codice:
rm *.TIFF!(JPEG|TIFF) Se funziona poi facciamo che va da solo in tutte le sub-directory partendo dalla directory principale, me lo studio un po' e non dovrebbe essere difficile, è capace che sia anzi una banalità. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 7
|
Grazie mille per la risposta.
In realtà il comando che mi suggerisci mi dà come risultato Codice:
-bash: !: event not found Codice:
rm *.TIFF Grazie ancora in anticipo per l'aiuto, Matteo |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 7
|
a forza di provare, forse ho risolto il primo problema (eliminare tutti i file .tiff presenti all'interno delle sottocartelle) con questo comando:
Codice:
find /CartellaMadre -maxdepth 2 -name "*.TIFF" -exec rm {} \;
Ora provo a capire come risolvere il secondo problema. A presto e grazie in anticipo, Matteo |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 3
|
Giusto,
Codice:
rm Codice:
-r Codice:
!(JPEG|TIFF) Mea culpa, complice il fatto che non ho potuto fare alcuna prova e non sono pratico di linguaggi di scripting. Fammi capire se ho capito bene il primo punto del secondo script... deve copiare il contenuto dei file dalla sub-subdirectory JPEG in un'altra sub-subdirectory della subdirectory che contiene anche la sub-subdirectory JPEG: in pratica, facendo un esempio, da Cartella_madre\XXXXXX\JPEG a Cartella_madre\XXXXXX\SITO. Il terzo punto penso si possa fare tranquillamente usando Codice:
find Codice:
rm Quindi probabilmente con Codice:
find /CartellaMadre -maxdepth 2 -name "/TIFF" -exec rm {} \;
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Nov 2015
Messaggi: 7
|
Esatto: vorrei che la cartella CartellaMadre\xxxx\JPEG venisse copiata in CartellaMadre\xxxx\SITO con tutto il suo contenuto (e questo per tutte le 3.000 sottocartelle di CartellaMadre).
Fatto ciò, rinominare automaticamente i file di SITO in image-x (con x contatore da 1 in su). Grazie ancora per la pazienza! Matteo |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:22.



















