2010-08-13 17 views
5

Osx mv et cp n'ont pas l'option --parents, alors comment l'émuler?Comment émuler cp et mv --parent sur osx

I.e. mv x/y/a.txt s/x/y/a.txt quand s est vide donne une erreur sans repertoire sauf si on fait un mkdir en premier ce qui est plutot lourd quand on essaye de faire cela a fait des milliers de fichiers.

+0

Avez-vous essayé 'cp -R'? Ou ne voulez-vous pas toute la structure? – whiskeysierra

+0

Non, juste des parties de celui-ci. –

Répondre

4

La solution (qui fonctionne sur toutes les plateformes qui a un rsync) est:

Utilisez trouver ou un autre outil pour créer un fichier avec les fichiers que vous souhaitez déplacer/copier des, à savoir

find *.mp3 > files.txt 

ensuite, utilisez des fichiers de rsync pour spécifier et en utilisant des fichiers --remove-source-il se comporte comme un -p mv et sans cela fonctionne comme cp -p:

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

Plus lent que mv/cp natif mais sa resumabl e et rsync ont beaucoup plus d'options qui peuvent aussi aider à nettoyer vos fichiers.

+0

Bon appel. En outre, vous pouvez installer la version MacPorts des utilitaires de ligne de commande, mais cela risque fort de casser beaucoup de choses si vous remplacez les utilitaires par défaut soit via PATH, EXPORT, ALIAS, soit par des liens symboliques. – DevNull

+0

Bonne solution, mais peut nécessiter l'étape supplémentaire de déplacement des fichiers de sortie (copiés). Par exemple, j'essaie de déplacer tous les fichiers audio wav de '/ Volumes/Music .../iTunes/...' (un disque externe) à '~/Music/iTunes/...' (disque interne). .. Je me suis retrouvé avec le sous-arbre supplémentaire de '/ Volumes/Music .../iTunes/...' * dans le répertoire de sortie, mais c'est facile à résoudre en déplaçant les fichiers. – user3728501