2010-08-13 12 views
5

Osx mv e cp non hanno l'opzione --parents, quindi come si può emularlo?Come emulare cp e mv --parent su osx

I.e. mv x/y/a.txt s/x/y/a.txt quando s è vuoto dà un errore di directory non trovato a meno che non si faccia prima un mkdir che è piuttosto ingombrante quando si cerca di fare ciò ha fatto migliaia di file.

+0

Hai provato 'cp -R'? O non vuoi l'intera struttura? – whiskeysierra

+0

No, solo parti di esso. –

risposta

4

La soluzione (che funziona su tutte le piattaforme che ha un rsync) è:

Usa trovare o qualche altro strumento per creare un file con i file che si desidera spostato/copiato, cioè

find *.mp3 > files.txt 

quindi utilizzare i file-da rsync per specificare e utilizzando --remove-source-files si comporta come un -p mv e senza di essa funziona come cp -p:

rsync --files-from=files.txt --remove-source-files src dest 

più lento di un nativo mv/cp ma il suo riassunto e e rsync hanno un sacco di altre opzioni che possono aiutare anche a ripulire i tuoi file.

+0

Buona chiamata. Inoltre, è possibile installare la versione MacPorts delle utilità della riga di comando, ma questo potrebbe molto probabilmente interrompere molte cose se si dovessero sostituire gli utils predefiniti interamente tramite PATH, EXPORT, ALIAS o symlink. – DevNull

+0

Buona soluzione, ma potrebbe richiedere il passaggio aggiuntivo per spostare i file di output (copiati). Ad esempio, sto cercando di spostare tutti i file audio wav da '/ Volumes/Music .../iTunes/...' (un disco esterno) a '~/Music/iTunes/...' (disco interno). .. Ho finito con l'albero secondario extra di '/ Volumes/Music .../iTunes/...' * dentro * la directory di output, ma questo è facile da risolvere spostando i file. – user3728501