Use Automator para copiar múltiples carpetas con diferentes cantidades de carpetas mientras elimina la carpeta principal

4
  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. e carpeta de imágenes con imágenes.

    
pregunta Likenota 01.06.2018 - 04:14

1 respuesta

3

Para asegurarse de que la declaración del problema sea clara, supongamos que:

  • Tienes varias carpetas con el formato 123x456 , por ejemplo. 300x250 , 728x90 , etc. Todos están contenidos en una única carpeta de nivel superior con un nombre arbitrario, por ejemplo, 01_FILE_NUMBER (sin importancia);
  • Cada carpeta llamada como 123x456 contenía una carpeta única llamada folderA , y nada más;
  • Cada carpeta llamada folderA contiene una carpeta única llamada folderB , y nada más;
  • Cada carpeta llamada folderB contiene una carpeta única nombrada de manera idéntica a la carpeta 123x456 de segundo nivel que contiene esta rama del subárbol 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 acceso de la forma 01_FILE_NUMBER/728x90/folderA/folderB/728x90/728x90.png . Es importante destacar que , folderA no tiene hermanos, y folderB no tiene hermanos, es decir, residen en su directorio principal por sí mismos.

Suponiendo que esto es correcto ...

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 , Pase entrada: as arguments ):

Desglose:

①Esteflujodetrabajolepidealusuarioqueubiqueeldirectoriodenivelsuperiorquecontienelascarpetasquesearchivarán.Usandoelnombredelejemplodearriba,elusuarionavegaráalacarpeta01_FILE_NUMBER;hagadobleclicenél;luegohagaclicen"Abrir" para comenzar a procesar 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 con esta copia de escritorio, sin tocar el original.
  3. Todas las carpetas de tres niveles de profundidad se suben de 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, suben un nivel y ahora residirán en la misma carpeta que folderA , en el nivel 2.
  4. Se eliminan todas las carpetas de dos niveles que están no con el nombre folderB . Esto eliminará las carpetas folderA ahora vacías.
  5. La estructura final de la carpeta 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 está seguro en su ubicación original) y conservar solo el archivo. Para hacer esto, agregue una Ejecutar acción de shell final al final del flujo de trabajo, usando las mismas opciones de Shell y Pasar entrada como antes, y 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 muestra de archivos y carpetas hasta que esté satisfecho de que hace lo que desea. El flujo de trabajo elimina permanentemente las carpetas, y estas no son recuperables.

    
respondido por el CJK 01.06.2018 - 20:38

Lea otras preguntas en las etiquetas