El siguiente es un ejemplo de Automator de flujo de trabajo que logra el objetivo declarado de su pregunta por su definida jerárquica de la estructura de la carpeta.
NOTA: Mientras que el ejemplo bash
código utilizado en el Ejecutar el Shell Script de acción se completó con éxito, sin embargo, la responsabilidad recae sobre el usuario para asegurar existen copias de seguridad antes de usarlo. Incluso me sugieren hacer una pequeña muestra de la copia de la meta jerárquica de la estructura de la carpeta para realizar la prueba antes de ejecutar el flujo de trabajo en el objetivo original.
Para el propósito de las pruebas de este flujo de trabajo, la siguiente jerárquica de la estructura de la carpeta con sus archivos fue creado:
$ tree ./Applications
./Applications
├── MCP19-00633 - Sport and Play at Br
│ └── Attachments
│ ├── barfoo.png
│ ├── filename.jpg
│ ├── filename.png
│ └── foobar.jpg
├── MCP19-00753 - Active Nabiac
│ └── Attachments
│ ├── barfoo.png
│ ├── filename.jpg
│ ├── filename.png
│ └── foobar.jpg
└── MCP19-00824 - A Family Friendly Ve
└── Attachments
├── barfoo.jpg
├── barfoo.png
├── filename.jpg
├── filename.png
├── foobar.jpg
├── namefile.jpg
└── namefile.png
6 directories, 15 files
$
Los resultados de la Automator flujo de trabajo ejecutar en el destino anterior:
$ tree ./Applications
./Applications
├── MCP19-00633 - Sport and Play at Br
│ ├── MCP19-00633 - Sport and Play at Br (1).jpg
│ ├── MCP19-00633 - Sport and Play at Br (1).png
│ ├── MCP19-00633 - Sport and Play at Br.jpg
│ └── MCP19-00633 - Sport and Play at Br.png
├── MCP19-00753 - Active Nabiac
│ ├── MCP19-00753 - Active Nabiac (1).jpg
│ ├── MCP19-00753 - Active Nabiac (1).png
│ ├── MCP19-00753 - Active Nabiac.jpg
│ └── MCP19-00753 - Active Nabiac.png
└── MCP19-00824 - A Family Friendly Ve
├── MCP19-00824 - A Family Friendly Ve (1).jpg
├── MCP19-00824 - A Family Friendly Ve (1).png
├── MCP19-00824 - A Family Friendly Ve (2).jpg
├── MCP19-00824 - A Family Friendly Ve (2).png
├── MCP19-00824 - A Family Friendly Ve (3).jpg
├── MCP19-00824 - A Family Friendly Ve.jpg
└── MCP19-00824 - A Family Friendly Ve.png
3 directories, 15 files
$
La imagen de abajo el ejemplo de Automator flujo de trabajo contiene las acciones utilizados y su particular configuración utilizada desde sus valores predeterminados. Asegúrese de que coincida con la configuración que se muestra en la imagen. En particular, el de Obtener el Contenido de la Carpeta acción tiene el [√] Repita el procedimiento para cada subcarpeta que se encuentra marcada, y al Ejecutar el Shell Script de acción ha de Pase de entrada: establece como argumentos.
Ejemplo bash
código de:
for f in "$@"; do
[[ -f $f ]] || continue
ext="${f##*.}"
move_to_dir="$(dirname "$(dirname "$f")")"
filename="$(basename "$move_to_dir")"
cd "$move_to_dir" || exit
if [[ ! -e ${filename}.${ext} ]]; then
mv "$f" "${filename}.${ext}"
else
n=1
for i in "${filename}" *".${ext}"; do
if [[ "${filename} (${n}).${ext}" == "$i" ]]; then
n=$(( n + 1 ))
fi
done
mv "$f" "${filename} (${n}).${ext}"
fi
done
for d in "$@"; do
[[ -d $d ]] || continue
[[ $(basename "$d") == Attachments ]] || continue
rmdir "$d"
done
Nota: El ejemplo bash
código es sólo eso y sólo contiene mínimo de errores de manejo, y se comprobó el uso de ShellCheck. Sin embargo, puede no contener todas las necesitaba/quería manejo de errores. La responsabilidad recae sobre el usuario para agregar cualquier error de manipulación como puede ser apropiado, necesitaba o quería.