2010-08-13 8 views
5

Osx mv y cp no tienen la opción --parents, entonces ¿cómo se puede emular?Cómo emular cp y mv --parent en osx

I.e. mv x/y/a.txt s/x/y/a.txt cuando s está vacío da un error de "no directorio encontrado" a menos que uno haga primero un mkdir, lo que es bastante engorroso al intentar hacer esto hizo miles de archivos.

+0

¿Has probado 'cp -R'? ¿O no quieres toda la estructura? – whiskeysierra

+0

No, solo partes de eso. –

Respuesta

4

La solución (que funciona en todas las plataformas que tiene un rsync) es:

Uso encontrar o alguna otra herramienta para crear un archivo con los archivos que desea movidos/copiados, es decir

find *.mp3 > files.txt 

a continuación, utilice archivos de rsync para localizarlo y mediante el uso de --remove-source-archivos se comporta como un -p mv y sin ella funciona como cp -p:

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

más lento que un mv/cp nativa, pero su resumabl e y rsync tienen muchas más opciones que de otro modo podrían ser útiles para limpiar sus archivos.

+0

Buena llamada. Además, puedes instalar la versión MacPorts de las utilidades de línea de comandos, pero es muy probable que rompa muchas cosas si reemplazas los utilitarios predeterminados por completo a través de PATH, EXPORT, ALIAS o enlaces simbólicos. – DevNull

+0

Buena solución, pero puede requerir el paso adicional de mover los archivos de salida (copiados). Por ejemplo, estoy tratando de mover todos los archivos de audio wav de '/ Volumes/Music .../iTunes/...' (un disco externo) a '~/Music/iTunes/...' (disco interno). .. Terminé con el subárbol extra de '/ Volumes/Music .../iTunes/...' * inside * del directorio de salida, pero esto es fácil de resolver moviendo los archivos. – user3728501

Cuestiones relacionadas