Mueva automáticamente los archivos a la carpeta correcta en el servidor

1

A menudo necesito mover archivos de una ubicación en un servidor a un conjunto de carpetas jerárquicas.

Los nombres de los archivos suelen tener 7 dígitos, a veces con algunos caracteres adicionales al final.

Las carpetas se configuran como conjuntos anidados para cada dígito: 3 de profundidad. Por lo tanto, un archivo llamado '6753687a.eps', por ejemplo, debería archivarse en la carpeta '675', que está en la carpeta '67', que está en la carpeta '6', que está en la carpeta 'Imágenes' en La raíz del volumen. No hay una carpeta '6753'.

Idealmente, me gustaría poder soltar grupos de archivos en una carpeta o una gotita o algo así, y hacer que los archivos se muevan automáticamente a sus carpetas correctas.

¿Alguien sabe de una manera de hacer esto?

marca
fuente
Debería ser posible con un script de Apple como acción de carpeta. Veré si puedo preparar algo más tarde si nadie más me gana.
Lizzan el

Respuestas:

1

Gotita Automator

Puede hacer esto con un flujo de trabajo de Automator y un script (estoy usando Python, pero podría hacerse con Bash, Applescript o cualquier otra cosa realmente).

  1. Abra Automator y elija el tipo de aplicación .
  2. Agregue una acción Ejecutar script de shell al flujo de trabajo.
  3. En la acción Ejecutar script de Shell , establezca la opción Shell en /usr/bin/python, y Pase input: a como argumentos .
  4. Establezca el texto del script en el script como se muestra a continuación. Asegúrese de cambiar la ruta de destino a su destino deseado.
  5. Guarde la aplicación en la ubicación deseada.

Guión

import sys
import os
import subprocess

destinationPath = '/Users/rob/Desktop/test'

for f in sys.argv[1:]:
    name = os.path.basename(f)
    newdir = os.path.join(destinationPath, name[:1], name[:2], name[:3])
    print newdir

    if not os.path.exists(newdir):
        os.makedirs(newdir)

    subprocess.call(['mv', f, os.path.join(newdir,name)])
#eof

Importante: Cambie la destinationPath =línea a la ruta que desee ( es decir, la carpeta que contiene sus carpetas numeradas). Asegúrese de conservar las comillas simples alrededor de la ruta.

Uso

Simplemente arrastre y suelte los archivos que desee en el archivo de la aplicación que guardó, y se moverán en consecuencia. Si las carpetas adecuadas aún no existen, se crearán.

ladrones
fuente
0

Supongo que en las ubicaciones de origen todos los archivos están en un directorio. Abra la Terminal, cambie a este directorio y ejecute

for i in *; do
    target="PATH/TO/Images/${i:0:1}/${i:0:2}/${i:0:3}"
    mkdir -p "$target"
    mv -v "$i" "$target"/
done

PD: Esto probablemente fallará si uno de los archivos en cuestión tiene un nombre que tiene menos de 3 caracteres.

nohillside
fuente