Utilice Automator para copiar varias carpetas con diferentes cantidades de carpetas mientras elimina la carpeta principal

  1. copie lo que esté dentro del cuadro rojo (carpeta de imágenes también con contenido) en el cuadro azul y elimine las carpetas.

  2. el resultado restante será SIZExSIZE -> sizexsize.file etc. y una carpeta de imágenes con imágenes.

introduzca la descripción de la imagen aquí

Para asegurarnos de que la statement del problema sea clara, asummos:

  • Tiene varias carpetas nombradas con el formato 123x456 , por ejemplo, 123x456 , 728x90 , etc. Todas están contenidas en una única carpeta de nivel superior con algún nombre arbitrario, por ejemplo, 01_FILE_NUMBER (sin importancia);
  • Cada carpeta nombrada 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 única carpeta con el mismo nombre que la 123x456 segundo nivel 123x456 que contiene esta twig del 123x456 del directorio, por ejemplo, 728x90 ;
  • Finalmente, estas carpetas de nivel inferior contienen un archivo de imagen .PNG cuyo nombre de archivo es idéntico a la carpeta principal, por ejemplo, 728x90.png ;
  • Resumiendo todo esto: todos los archivos de imagen .PNG tienen una ruta de la forma 01_FILE_NUMBER/728x90/folderA/folderB/728x90/728x90.png . Es importante destacar que la folderA no tiene hermanos, y la folderB no tiene hermanos, es decir, residen en su directorio principal por sí mismos.

Suponiendo que esto es preciso …

Haría la mayor parte del procesamiento de archivos y carpetas con una acción Ejecutar script de shell (use las siguientes opciones: Shell: /bin/bash , Pasar entrada: as arguments ):

Flujo de trabajo de Automator

Descompostura:

① Este flujo de trabajo le pide al usuario que ubique el directorio de nivel superior que contiene las carpetas que se archivarán. Usando el nombre del ejemplo de arriba, el usuario navegará a la carpeta 01_FILE_NUMBER ; haga doble clic en él; luego haga clic en “Abrir” para comenzar el procesamiento de su contenido.

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

  1. La carpeta completa de nivel superior y su contenido se copian en el escritorio, que es donde usted indicó que desea que resida el archivo final.
  2. El procesamiento se realiza utilizando esta copia de escritorio, dejando el original sin tocar.
  3. Todas las carpetas de tres niveles de profundidad se mueven un nivel. Para ilustrar esto, considere la ruta de ejemplo 01_FILE_NUMBER/728x90/folderA/folderB/728x90/728x90.png : la carpeta de nivel 1 es 728x90 ; la carpeta de nivel 2 es folderA ; la carpeta de nivel 3 es folderB . Todas las carpetas llamadas folderB residen en este nivel de tercer nivel. Luego se suben un nivel y ahora residirán en la misma carpeta que la carpeta folderA , en el nivel 2.
  4. Todas las carpetas de dos niveles de profundidad que no se denominan folderB se eliminan. Esto eliminará las carpetas de folderA ahora vacías.
  5. La estructura de carpetas final ahora se ve así: 01_FILE_NUMBER/728x90/folderB/728x90/728x90.png .

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

Aquí está el código fuente de bash para copiar y pegar:

  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á tanto la carpeta de nivel superior copiada como su forma archivada. Ahora puede eliminar de forma segura la carpeta sin comprimir del escritorio (el original aún es seguro en su ubicación original) y conservar solo el archivo. Para hacer esto, agregue una Acción de Ejecutar Shell final al final del flujo de trabajo, usando las mismas opciones de entrada de Shell y Pasar como antes, e ingrese este código fuente:

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

Advertencia: pruebe este flujo de trabajo con un conjunto de archivos y carpetas de muestra hasta que esté satisfecho de que hace lo que desea. El flujo de trabajo elimina permanentemente las carpetas, y estas no son recuperables.