Obtuve una carpeta con una gran cantidad de archivos con diferentes sufijos en varias subcarpetas.
Mi flujo de trabajo de Automator funciona de la siguiente manera:
Esto funciona como un encanto. Pero todos los archivos se copian en la misma carpeta raíz de destino. Necesito mantener la estructura de la subcarpeta. Por ejemplo:
sourceFolder
subfolderA
fileA.jpg
fileB.xls
fileC.xls
subfolderB
fileC.jpg
fileD.xls
fileE.xls
Resultado esperado (filtro para el sufijo de archivo .xls):
destinationFolder
subfolderA
fileB.xls
fileC.xls
subfolderB
fileD.xls
fileE.xls
resultado actual:
destinationFolder
fileB.xls
fileC.xls
fileD.xls
fileE.xls
Actualizar
Soy un desarrollador. Por lo tanto, también se aceptará un shell o AppleScript. :)
rsync -avh --include='*/' --include='*.xls' --exclude='*' path/to/sourceFolder/ path/to/destinationFolder
Tenga en cuenta que /
al final de la ruta de origen, es importante . Esta solución agregaría todos los directorios vacíos, si no los quiere, mire la opción --prune-empty-dirs
.
Con la expansión de llaves, en realidad puede incluir más tipos de archivo a la vez, en lugar de tener
--include='*.xls' --include='*.pdf' --include='*.txt'
puedes usar
--include='*.'{xls,pdf,txt}
Termino con un script de shell, que funciona según lo solicitado:
$ find ./sourceFolder -name "*.xls*" -type f -print0 | xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./destinationFolder/"
rsync -avh --include='*/' --include='*.xls' --exclude='*' sourceFolder/ destinationFolder
? Con la expansión de llaves, puede incluir más tipos de archivo --include='*.'{xls,pdf,txt}
.rsync
una vez con las banderas apropiadas.En un script de shell, puede usar mkbom para crear un archivo BOM (lista de materiales) que contenga una lista de archivos que desea copiar. Luego puede usar el comando ditto con la opción --bom para copiar solo los archivos enumerados en el archivo BOM.
Tino Rub
Manuel
.xls
archivos, luego excluya todo lo demás. Si quieres más cosas como--delete
agregarlas a tu comando.