-
copie lo que esté dentro del cuadro rojo (carpeta de imágenes también con contenido) en el cuadro azul y elimine las carpetas.
-
el resultado restante será SIZExSIZE - > sizexsize.file, etc. e carpeta de imágenes con imágenes.
Para asegurarse de que la declaración del problema sea clara, supongamos que:
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); 123x456
contenía una carpeta única llamada folderA
, y nada más; folderA
contiene una carpeta única llamada folderB
, y nada más; 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
; .PNG
cuyo nombre de archivo es idéntico a la carpeta principal, por ejemplo. 728x90.png
; .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. 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
):
①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:
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. folderB
. Esto eliminará las carpetas folderA
ahora vací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
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.
Lea otras preguntas en las etiquetas applescript automator