4 votos

Usar Automator para copiar varias carpetas con diferentes cantidades de carpetas mientras se quitan la carpeta principal

Todas las carpetas deben ser copiados a la de escritorio y comprimido con el mismo diseño.

PASO 1: copiar folderB en SIZExSIZE carpeta

PASO 2: Elimine todos los archivos en la SIZExSIZE además de folderB

PASO 3: ELIMINE todos los archivos excepto por cualquier SIZExSIZE carpetas

enter image description here

enter image description here

3voto

qarma Puntos 71

Es muy difícil entender lo que quieres decir, así que me permita asegurarse de que he interpretado correctamente:

  • Usted tiene un número de carpetas con el nombre utilizando el formato 123x456, por ejemplo 300x250, 728x90, etc. Estos están contenidos en una sola carpeta de nivel superior con algún nombre arbitrario, por ejemplo 01_FILE_NUMBER (sin importancia);
  • Cada carpeta denominada como 123x456 contenía una sola carpeta llamada folderA, y nada más;
  • Cada carpeta llamada folderA contiene una sola carpeta llamada folderB, y nada más;
  • Cada carpeta llamada folderB contiene una sola carpeta con el nombre de forma idéntica a la 123x456 de segundo nivel de la carpeta que contiene esta rama del directorio en el sub-árbol, por ejemplo 728x90;
  • Finalmente, estas inferior-nivel de carpetas contienen un .PNG de archivo de imagen cuyo nombre es idéntico al de la carpeta principal, por ejemplo 728x90.png;
  • Resumiendo todo esto: todos .PNG archivos de imagen tiene una ruta de acceso de la forma 01_FILE_NUMBER/728x90/folderA/folderB/728x90/728x90.png. Es importante destacar, folderA no tiene hermanos, y folderB no tiene hermanos, es decir, residen en su directorio padre por ellos mismos.

Suponiendo que esto es exacto...

Yo haría la mayor parte de el archivo y la carpeta de procesamiento con Ejecutar el Shell Script de acción (utilice las siguientes opciones: Shell: /bin/bash, Pase de entrada: as arguments):

Automator Workflow

Desglose:

① Este flujo de trabajo pide al usuario para localizar el directorio de nivel superior que contiene las carpetas para ser archivados. Utilizando el ejemplo de nombre de la anterior, el usuario podría navegar a la carpeta 01_FILE_NUMBER; haga doble clic en él; a continuación, haga clic en "Abrir" para comenzar el procesamiento de sus contenidos.

② Un shell script procesa el contenido de la carpeta de la siguiente manera:

  1. Toda la carpeta de nivel superior y su contenido se copia en el escritorio, que es donde usted ha declarado que desea que el final de archivo para residir.
  2. El procesamiento se realiza mediante este escritorio copia, dejando el original intacto.
  3. Todas las carpetas de tres niveles de profundidad se mueven de un nivel. Para ilustrar esto, considere la ruta de acceso de ejemplo 01_FILE_NUMBER/728x90/folderA/folderB/728x90/728x90.png: el nivel 1 carpeta 728x90; el nivel 2 de la carpeta folderA; el nivel 3, carpeta folderB. Todas las carpetas denominadas folderB residen en este tercer nivel. Luego se trasladó hasta un nivel, y ahora residen en la misma carpeta como folderA, en el nivel 2.
  4. Todas las carpetas de dos niveles de profundidad que no nombrado folderB son eliminados. Esto eliminará la ahora vacía folderA carpetas.
  5. El final de la estructura de la carpeta ahora se parece a esto: 01_FILE_NUMBER/728x90/folderB/728x90/728x90.png.

③ Un .zip archivo se crea en el escritorio con el mismo nombre que el original de la carpeta de nivel superior, es decir, 01_FILE_NUMBER.zip.

Aquí es el bash código fuente para copiar-n-paste:

    cp -R "$1" ~/Desktop
    cd ~/Desktop/"$(basename "$1")"
    find . -type d -depth 3 -execdir mv {} ../ \;
    find . -type d -depth 2 ! -iname "folderB" -exec rm -R {} +
    pwd

Opcionalmente...

El escritorio tendrá la copia de la carpeta de nivel superior y su formato de archivo. Ahora usted puede eliminar de forma segura la carpeta descomprimida en el escritorio (el original es seguro todavía en su ubicación original) y dejar solo el archivo. Para hacer esto, añada una final Ejecutar el Shell de Acción al final del flujo de trabajo, utilizando la misma Shell y Pase de entrada opciones como antes, e introduzca este código fuente:

    f="$1"
    rm -R "${f%.*}"
    open -R "$f"  # Reveals the archive in Finder

Advertencia: la Prueba de este flujo de trabajo con una muestra de un conjunto de archivos y carpetas hasta que usted esté satisfecho no lo que desea. El flujo de trabajo se elimina de forma permanente carpetas, y estos son no recuperables.

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