Copia una cartella (e la sua struttura interna), ma include solo file specifici

2

Ho una cartella (con sottocartelle e altre sottocartelle) che la cartella finale ha molti tipi di file diversi. Questi tipi di file includono immagini (.png / .jpeg), video (.mov) e file di testo (.txt). Ma vorrei copiare l'intera cartella (con la struttura interna) e includere solo .mp3. Qualcuno ha qualche idea su come farlo. (per favore non dire manualmente perché ci sono 100+ cartelle e la cartella stessa è di 60 GB, quindi non dirmi di copiare l'intera cartella) Preferibilmente, mi piacerebbe se qualcuno fosse in grado di darmi una soluzione dove posso muovere a titolo definitivo il .mp3 (pur preservando la struttura delle cartelle)

    
posta BobRon 15.06.2015 - 02:02
fonte

2 risposte

1

I seguenti due comandi, usati in un Terminale, possono realizzare ciò che hai chiesto, la prima creazione di una struttura di directory gerarchica di destinazione contenente i file *. mp3 e il secondo comando che cancella i file *. mp3 dalla struttura di directory gerarchica di origine .

Nota: assicurati di disporre di backup appropriati prima di utilizzare il secondo comando poiché un errore può essere fatale.

Apri terminale.

Per impostazione predefinita, Terminal si apre sulla directory principale di uno quindi utilizzerò come esempio il punto di partenza e la directory musicale come struttura della directory gerarchica di origine / em>.

Questo primo comando creerà una copia della struttura di directory gerarchica musicale contenente solo file *. mp3 nella directory di destinazione . In altre parole, dopo l'esecuzione del primo comando, ci sarà una directory di destinazione contenente la stessa struttura gerarchica delle directory a partire da Musica all'interno di directory di destinazione che contiene solo file *. mp3 e solo le directory dalla sorgente che contengono *. mp3 file. Se una determinata directory sorgente non contiene un file *. Mp3 , allora quella directory non viene creata nella struttura gerarchica della directory di destinazione .

Nota: la riga di comando completa si estende fuori dalla vista senza scorrimento orizzontale.

find ./Music -name "*.mp3" -type f -print0 | xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./mp3 files only/"

Nota: comando completo mostrato su due righe per chiarezza:

find ./Music -name "*.mp3" -type f -print0 | \
xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./mp3 files only/"

Quando termina il comando precedente ci sarà una directory nella mia home directory chiamata "solo file mp3" e all'interno di quel directory ci sarà una struttura di directory gerarchica musicale contenente solo file *. mp3 . Nota: se la directory di destinazione non esiste, verrà creata automaticamente.

Ora che i file *. mp3 sono stati copiati dalla struttura della directory gerarchica di origine della musica nella directory "solo file mp3" I file *. mp3 possono essere rimossi dalla struttura della directory gerarchica musicale di origine con il seguente comando.

find  ./Music/ -name "*.mp3" -delete

Questo è tutto, i file *. mp3 insieme alla loro struttura gerarchica delle directory sono stati copiati in una nuova posizione e *. mp3 file cancellati dalla fonte .

    
risposta data 15.06.2015 - 03:51
fonte
0

Senza andare a uno script di riga di comando piuttosto complesso, penso che copiare l'intera cartella, e quindi cercare ed eliminare i file che non vuoi (facile attraverso la ricerca del Finder), sarebbe il modo più semplice. Fammi sapere se vuoi i dettagli (o, se copiare l'intera cartella sarebbe davvero un anatema).

    
risposta data 15.06.2015 - 03:30
fonte

Leggi altre domande sui tag