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
):
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:
- 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.
- El procesamiento se realiza mediante este escritorio copia, dejando el original intacto.
- 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.
- Todas las carpetas de dos niveles de profundidad que no nombrado
folderB
son eliminados. Esto eliminará la ahora vacía folderA
carpetas.
- 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.