Mover 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 colocar grupos de archivos en una carpeta o un droplet o algo así, y hacer que los archivos se muevan automáticamente a sus carpetas correctas.

¿Alguien sabe de una manera de hacer esto?

    
pregunta Mark 21.11.2012 - 11:17

2 respuestas

1

Automator Droplet

Puedes hacer esto con un flujo de trabajo de Automator y una secuencia de comandos (estoy usando Python, pero podría hacerse con Bash, Applescript o cualquier otra cosa).

  1. Abre Automator y elige 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 , configure la opción Shell en /usr/bin/python y Pase la entrada: 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. Guarda la aplicación en la ubicación deseada.

Script

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 línea destinationPath = a la ruta que desee ( es decir la carpeta que contiene sus carpetas numeradas). Asegúrate de mantener las comillas simples alrededor de la ruta.

Uso

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

    
respondido por el robmathers 21.11.2012 - 17:12
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

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

    
respondido por el nohillside 21.11.2012 - 17:03

Lea otras preguntas en las etiquetas