• Bonjour Visiteur. Bienvenue sur les nouveaux forums de MacGeneration. La peinture est encore fraiche, quelques boulons doivent être resserrés, plus d’informations demain !

Copie, regroupement et renommage de fichiers.

springfield

Membre junior
18 Novembre 2015
26
0
Bonjour,

J'aurai besoin de conseil pour optimiser et sécuriser une opération de déplacement de 10.000 fichiers minimum et d'un nouveau nommage selon un base contenu dans un fichier excel.

1. Comment copier uniquement les fichiers contenus de plusieurs sous-sous-repertoires (présent sur un serveur A) vers un unique dossier (dans un serveur B).
2. Puis renommer un aussi grand nombre de fichiers d'après un fichier Excel ou CSV (au final, les images sont renommés d'un code A vers un code B ou nom)..

Pour l'instant, je le vois de façon non optimisée :
1. Copie du serveur A au serveur B.
2. Déplacement des fichiers contenus (serveur B) dans les 100 sous-dossiers.
3. Nouvelle nomenclature d'après le fichier Excel.
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 604
583
Le fichier Excel devra être au format csv pour être exploitable par le script. ;)
Comment te connectes-tu aux serveurs A & B ?

Aurais-tu un exemple de copie/renommage à faire et du contenu du fichier Excel ? Ou ais-je bien compris avec l'exemple si dessous ?
Source (rep1 à rep3 sont variables) :
  • Serveur A
  • Fichier : /rep1/rep2/rep3/fichier1.txt
Cible (rep4 est fixe) :
  • Serveur B
  • Fichier : /rep4/fichier2.txt
 

springfield

Membre junior
18 Novembre 2015
26
0
Merci de ta réponse.

Je me connecte depuis "Se connecter au serveur" pour monter les deux serveurs.

Le type de chemin du serveur A est
SERVEUR/DOSSIER_1/DOSSIER_2/XXXXX_NOM_DU_DOSSIER/XXXXX_IMAGES (XXXXX est une série de 5 chiffres).

L'excel contient en partie les colonnes nécessaires :
Code_ANom_ProduitCode_BNouveau_NomCommande terminal
abcd123abc45Le mac pour les nuls97821291289019782129128901.jpg
opijkl256abc45iPod MiniiPodMini.jpg
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 604
583
Faire "Se connecter au serveur" pour monter tes serveurs dans le finder. Ils devraient ensuite être visibles dans le terminal
Peux-tu te connecter aux serveurs puis lancer cette commande dans le terminal ? Dis moi ensuite si tu vois bien tes 2 serveurs
ls -l /Volumes
Si oui, cela devrait pouvoir se faire via le terminal sans trop de problème ;)

Par contre, je n'ai pas trop compris ton tableau. S'agit-il de l'action suivante pour la première ligne ?
SERVEUR_A/DOSSIER_1/DOSSIER_2/XXXXX_NOM_DU_DOSSIER/XXXXX_IMAGES/abcd123abc45 à copier en 9782129128901.jpg dans SERVEUR_B/DOSSIER/ ?
 

springfield

Membre junior
18 Novembre 2015
26
0
(…) Dis moi ensuite si tu vois bien tes 2 serveurs (…)
Je vois bien les deux serveurs dans le Terminal.

Par contre, je n'ai pas trop compris ton tableau. S'agit-il de l'action suivante pour la première ligne ?
SERVEUR_A/DOSSIER_1/DOSSIER_2/XXXXX_NOM_DU_DOSSIER/XXXXX_IMAGES/abcd123abc45 à copier en 9782129128901.jpg dans SERVEUR_B/DOSSIER/ ?
C'est le but final effectivement. Après rien n'empêche de le faire en plusieurs étapes.

Mon tableau récapitule (le vrai est rempli de + de 10.000 lignes) les 2 cas possibles :
• Si Code_B est rempli alors ça devient le nom du fichier.
• Si Code_B est vide, le nom de fichier devient Nom_Produit.

Je profite de ce cas pour apprendre à mieux appréhender le Terminal.
1. Pour le moment, je fais un cp -R dossier_source dossier_cible
2. Je reste bloqué sur le fait que la recopie me copie qu'une fois que mes dossiers (et leurs contenants) seront récupérés, je sorte les contenants vers un seul dossier. A part faire un mv
3. Pour le renommage, je pensais à un mv nom_source nom_cible.
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 604
583
Le cp est une copie (fichier ou répertoire). Tu peux copier un unique fichier sous un nouveau nom ou copier un/plusieurs fichiers dans un répertoire. Le mv, quand à lui, déplace le fichier/répertoire (on l'utilise aussi pour renommer un fichier).
Par sécurité, je préfère faire une copie et après avoir vérifié que c'est bon, supprimer le fichier d'origine.

Un find permet de ne chercher que les éléments de ton choix (exemple tous les fichiers *.txt) et de les traiter ensuite via une commande plus complexe ou non.

Autres questions:
  • les XXXXX sont bien aléatoire ?
  • le dossier de destination est-il bien unique ? si non, il faudra le rajouter dans le fichier csv
  • est-il possible d'avoir 2 fichiers avec le même nom (d'origine ou de destination)
 

springfield

Membre junior
18 Novembre 2015
26
0
Merci pour tes réponses qui ont enrichi ma réflexion.

Le plus important est de pouvoir cleaner la source de mes noms de produit qui comportaient de nombreux signes perturbant l'application de la commande. Pour le conditionnement, je suis passé par un logiciel de traitement de données qui m'était plus familier et qui automatise mes demandes.