1 votos

¿Cómo puedo obtener automator para actuar en varias carpetas?

Tengo una serie de carpetas en el siguiente formato:

Folder_Name_1
    Converted_Files
        file1.aiff
        file2.aiff
             :
             :
        fileX.aiff
Folder_Name_2
    Converted_Files
        file1.aiff
        file2.aiff
             :
             :
        fileX.aiff
  :
  :
Folder_Name_nnn
    Converted_Files
        file1.aiff
        file2.aiff
             :
             :
        fileX.aiff

He escrito un script en bash que va a mover el archivo1.aiff, archivo2.aiff, etc. subir un nivel en Folder_Name_n y, a continuación, elimine "Converted_Files".

Automator sólo actuará en uno de los Folder_Name_n en un momento.

Lo que yo quiero hacer es tener automator actuar en Folder_Name_1, entonces Folder_Name_2, todo el camino hasta Folder_Name_n.

Aquí está mi script de automator: Automator Flow

Aquí está el script de bash como texto:

cd "$1"
cd Converted_Files
mv *.aiff ..
rm .DS_Store
cd ..
rm -r Converted_Files

Gracias.

-2voto

user3439894 Puntos 5883

Como no estaban demasiado claras sobre el tipo de Automator de flujo de trabajo que has creado, me voy a centrar principalmente en el código que estás usando en el Ejecutar el Shell Script de acción.

El siguiente ejemplo de Automator flujo de trabajo fue creado por Archivo > Nuevo > Flujo de trabajo de Automator con un Seleccionado Buscador de Elementos de acción y Ejecutar el Shell Script de acción agregó, con la configuración como se muestra en la imagen de más abajo.

Las pruebas se realizaron con una selección que contiene tanto los archivos y carpetas que se incluyen tanto los objetivos reales de la Automator flujo de trabajo's Ejecutar el Shell Script de acción, y a los demás como si accidentalmente selecciona si se quiere. Con los siguientes archivos y carpetas seleccionados en el Buscador:

.
├── Archive.zip
├── Folder_Name_1
├── Folder_Name_2
├── Folder_Name_3
├── Foobar
└── Foobar.txt

El siguiente ampliado de la vista del árbol, de la selección de archivos y carpetas que se muestra arriba, obviamente contiene archivos que no son los objetivos reales del flujo de trabajo así como una carpeta que no contiene el contenido esperado. Esto fue hecho para probar que el ejemplo bash código funciona como se esperaba.

.
├── Archive.zip
├── Folder_Name_1
│   └── Converted_Files
│       ├── file1.aiff
│       └── file2.aiff
├── Folder_Name_2
│   └── Converted_Files
│       ├── file1.aiff
│       └── file2.aiff
├── Folder_Name_3
│   └── Converted_Files
│       ├── file1.aiff
│       └── file2.aiff
├── Foobar
│   └── Barfoo
│       └── More Foobar.txt
└── Foobar.txt

8 directories, 9 files

Después de ejecutar el flujo de trabajo de Automator en el seleccionado archivos y carpetas en el Finder, a continuación se muestra la nueva ampliado de la vista del árbol de la selección original ampliado vista de árbol:

.
├── Archive.zip
├── Folder_Name_1
│   ├── file1.aiff
│   └── file2.aiff
├── Folder_Name_2
│   ├── file1.aiff
│   └── file2.aiff
├── Folder_Name_3
│   ├── file1.aiff
│   └── file2.aiff
├── Foobar
│   └── Barfoo
│       └── More Foobar.txt
└── Foobar.txt

5 directories, 9 files

Como se puede ver en la imagen de abajo, y en conjunción con la información presentada anteriormente, el Automator flujo de trabajo completado sin errores y solo se procesa la adecuada carpetas de destino aunque adicionales que no son blancos fueron enviados al Ejecutar el Shell Script de acción como se muestra arriba.

También tenga en cuenta que las pruebas adicionales que se había hecho con las carpetas de destino /Folder_Name_N/Converted_Files/ no contengan .aiff contenido para asegurarse de que otros luego la trasladó .aiff de contenido no tiene que ser eliminado explícitamente, por ejemplo rm .DS_Store no fue necesario, ya que el -r opción de la rm comando le intento quitar el archivo de la jerarquía de sus root en cada archivo como argumento. Usted también podría considerar el uso de la -f opción también. (Ya he añadido a mi ejemplo bash código, por lo tanto, eliminar si usted no desea utilizar esa opción.)

Automator Workflow Image

Ejemplo bash código para Ejecutar el Shell Script de acción:

for d in "$@"; do
    [ -d "$d" ] || continue 
    if [ -d "$d/Converted_Files" ]; then
        cd "$d/Converted_Files" || exit 
        for f in *.aiff; do
            mv "$f" ..
        done
    fi
    cd ..
    rm -rf "Converted_Files"
done

Tenga en cuenta que el ejemplo bash código es sólo eso, y no puede contener todos los errores de manejo como puede ser apropiado/necesitaba/quería. La responsabilidad recae siempre sobre el usuario para implementar cualquier adecuados y necesarios/quería manejo de errores con cualquier código que uno elige para su uso.

La prueba se realiza bajo macOS Alta Sierra 10.13.6.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X