Sposta automaticamente i file nella cartella corretta sul server

1

Spesso ho bisogno di spostare file da una posizione su un server in una serie di cartelle gerarchiche.

I nomi dei file sono generalmente lunghi 7 cifre, a volte con caratteri extra alla fine.

Le cartelle sono impostate come serie annidate per ogni cifra - 3 profondità. Quindi, per esempio, un file chiamato '6753687a.eps' dovrebbe essere archiviato nella cartella '675', che si trova nella cartella '67', che si trova nella cartella '6', che si trova nella cartella 'Immagini' a la radice del volume. Non esiste una cartella '6753'.

Idealmente, mi piacerebbe essere in grado di rilasciare gruppi di file in una cartella o in un droplet o qualcosa del genere e far spostare automaticamente i file nelle loro cartelle corrette.

Qualcuno sa di un modo per farlo?

    
posta Mark 21.11.2012 - 11:17
fonte

2 risposte

1

Gocciolina automatica

Puoi farlo con un flusso di lavoro di Automator e uno script (sto usando Python, ma potrebbe essere fatto con Bash, Applescript o qualsiasi altra cosa veramente).

  1. Apri Automator e scegli il tipo Applicazione .
  2. Aggiungi un'azione Esegui script shell al flusso di lavoro.
  3. Nell'azione Esegui script shell , imposta l'opzione Shell su /usr/bin/python e Passa input: a come argomenti .
  4. Imposta il testo dello script nello script come mostrato di seguito. Assicurati di cambiare il percorso di destinazione verso la destinazione desiderata.
  5. Salva l'applicazione nella posizione desiderata.

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: modifica la riga destinationPath = sul percorso che desideri ( i.e. la cartella che contiene le tue cartelle numerate). Assicurati di conservare le virgolette singole intorno al percorso.

Uso

Basta trascinare e rilasciare i file che vuoi sul file dell'applicazione che hai salvato e verranno spostati di conseguenza. Se le cartelle appropriate non esistono già, verranno create.

    
risposta data 21.11.2012 - 17:12
fonte
0

Suppongo che nelle posizioni di origine tutti i file si trovino in una directory. Apri Terminale, passa a questa directory ed esegui

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: probabilmente fallirà se uno dei file in questione ha un nome più corto di 3 caratteri.

    
risposta data 21.11.2012 - 17:03
fonte

Leggi altre domande sui tag