# Copie, regroupement et renommage de fichiers.



## springfield (12 Janvier 2020)

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.


----------



## Membre supprimé 1129907 (12 Janvier 2020)

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 (12 Janvier 2020)

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_A**Nom_Produit**Code_B**Nouveau_Nom**Commande terminal*abcd123abc45Le mac pour les nuls97821291289019782129128901.jpgopijkl256abc45iPod MiniiPodMini.jpg


----------



## Membre supprimé 1129907 (12 Janvier 2020)

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 (12 Janvier 2020)

ecatomb a dit:


> (…) Dis moi ensuite si tu vois bien tes 2 serveurs (…)



Je vois bien les deux serveurs dans le Terminal.



ecatomb a dit:


> 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`.


----------



## Membre supprimé 1129907 (12 Janvier 2020)

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 (26 Janvier 2020)

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.


----------

