1 votes

Déplacer automatiquement les fichiers dans le bon dossier sur le serveur

J'ai souvent besoin de déplacer des fichiers d'un emplacement sur un serveur vers un ensemble de dossiers hiérarchiques.

Les noms de fichiers sont généralement composés de 7 chiffres, avec parfois quelques caractères supplémentaires à la fin.

Les dossiers sont constitués d'ensembles imbriqués pour chaque chiffre - 3 profondeurs. Ainsi, un fichier nommé "6753687a.eps", par exemple, doit être classé dans le dossier "675", qui se trouve dans le dossier "67", qui se trouve dans le dossier "6", qui se trouve dans le dossier "Images" à la racine du volume. Il n'y a pas de dossier "6753".

Dans l'idéal, j'aimerais pouvoir déposer des groupes de fichiers dans un dossier ou un droplet, par exemple, et faire en sorte que les fichiers soient automatiquement déplacés dans leurs dossiers respectifs.

Quelqu'un connaît-il un moyen de le faire ?

1voto

Ged Byrne Points 481

Droplet Automator

Vous pouvez le faire avec un flux de travail Automator et un script (j'utilise Python, mais cela pourrait être fait avec Bash, Applescript ou n'importe quoi d'autre vraiment).

  1. Ouvrez Automator, et choisissez Application type.
  2. Ajouter un Exécuter le Shell script au flux de travail.
  3. Dans le Exécuter le Shell script l'action, définissez la Shell option pour /usr/bin/python et Passez l'entrée : a comme arguments .
  4. Définissez le texte script au script comme indiqué ci-dessous. Veillez à modifier le chemin de destination en fonction de la destination souhaitée.
  5. Sauvez l'application à l'endroit souhaité.

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

Important : Changez le destinationPath = vers le chemin que vous souhaitez ( c'est-à-dire le dossier qui contient vos dossiers numérotés). Veillez à conserver les guillemets simples autour du chemin.

Utilisation

Il suffit de faire glisser et de déposer les fichiers que vous voulez sur le fichier d'application que vous avez enregistré, et ils seront déplacés en conséquence. Si les dossiers appropriés n'existent pas encore, ils seront créés.

0voto

nohillside Points 82672

Je suppose que sur les emplacements sources, tous les fichiers sont dans un seul répertoire. Ouvrez le Terminal, passez dans ce répertoire et exécutez

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 : Cela échouera probablement si l'un des fichiers en question a un nom inférieur à 3 caractères.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X