Déplacer des fichiers de même extension dans dossiers divers

Kambro

Membre junior
22 Avril 2017
37
1
37
Bonjour,

Dans un dossier unique, j'ai un lot de fichiers de même extension (.xlm) que je dois déplacer dans des dossiers différents où se trouvent déjà des fichiers de même nom que les premiers, mais d'extension différente (.sib).
Je m'explique :
Dans le dossiers n° 1, j'ai des fichiers divers.xlm, affaire.xlm, abc.xlm, etc
Dans un autre dossier, j'ai un fichier divers.sib, puis dans un autre dossier, j'ai affaire.sib enfin dans un dernier dossier j'ai abc.sib.
Je dois déplacer le ficher divers.xlm dans le dossier où se trouve divers.sib et ainsi de suite pour les autres.

Y a-t-il une solution Automator pour cela, ou faut-il faire le travail manuellement ?

Je vous remercie d'avance,

Kambro
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 977
746
Un petit script devrait faire ça sans trop de problème. Pas dispo pour regarder plus en détails pour le moment. De mon côté ce serait un script sh (pas d’expérience sur les autres).

Est-ce juste pour une fois ou à pouvoir utiliser aussi plus tard avec d’autres répertoires ?
 

Kambro

Membre junior
22 Avril 2017
37
1
37
Merci ecatomb. Ce n'est que pour une fois : 270 fichiers.
C'est peut-être un peu trop peu pour faire un script ? Je ne connais pas du tout ce que cela représente en temps.
Qu'est ce qu'un script sh ?
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 977
746
Un script shell. Bon, cela a l'air de marcher:
Bloc de code:
[ecatomb@~/Downloads] $ ls -l *
dossier1:
total 0
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 abc.xlm
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 affaire.xlm
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 divers.xlm

dossier2:
total 0
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 divers.sib

dossier3:
total 0
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 affaire.sib
[ecatomb@~/Downloads] $ list=$(find . -name "*.xlm")
[ecatomb@~/Downloads] $ for longname in ${list}
do
  file_xlm=$(basename "${longname}")
  file_sib=$(echo "${file_xlm}" | sed 's/xlm/sib/')
 
  longname_sib=$(find . -name "${file_sib}")
  if [ "$longname_sib" != "" ]
  then
    rep_sib=$(dirname ${longname_sib})
    cp "${longname}" "${rep_sib}/."
  fi
done
[ecatomb@~/Downloads] $ ls -l *
dossier1:
total 0
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 abc.xlm
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 affaire.xlm
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 divers.xlm

dossier2:
total 0
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 divers.sib
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:29 divers.xlm

dossier3:
total 0
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:04 affaire.sib
-rw-r--r--  1 ecatomb  staff  0 26 sep 21:29 affaire.xlm
[ecatomb@~/Downloads] $
Donc tu lances le Terminal puis tu passes les commandes suivantes. N'oublie pas de faire une copie par sécurité.

Remplace le chemin par celui du dossier unique contenant tes différents dossiers.
Bloc de code:
cd "/Users/Kambro/mon_dossier"
Pour récupérer la série de tous les fichiers xlm
Bloc de code:
list=$(find . -name "*.xlm")
Pour en faire une copie dans les autres dossiers (sans les supprimer du dossier source)
Bloc de code:
for longname in ${list}
do
  file_xlm=$(basename "${longname}")
  file_sib=$(echo "${file_xlm}" | sed 's/xlm/sib/')
 
  longname_sib=$(find . -name "${file_sib}")
  if [ "$longname_sib" != "" ]
  then
    rep_sib=$(dirname ${longname_sib})
    cp "${longname}" "${rep_sib}/."
  fi
done
 

Kambro

Membre junior
22 Avril 2017
37
1
37
Je vous prie de m'excuser, mais cela n'a pas marché.
Précision : les 270 fichiers xml sont déjà tous rassemblés dans un même dossier, mais ont des noms divers.
Merci pour votre patience.
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 977
746
C'est ce que j'ai dans mon test. 3 fichiers xml dans le dossier1.
Qu'as-tu eu d'affiché ?
 

Kambro

Membre junior
22 Avril 2017
37
1
37
D'affiché sur le terminal : rien de plus que ce que j'y ai inséré. Cela finissait donc par "done"
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 977
746
Fait donc ça et poste le résultat:
Bloc de code:
cd "/Users/Kambro/mon_dossier"
list=$(find . -name "*.xlm")
echo $list
 

Kambro

Membre junior
22 Avril 2017
37
1
37
Bloc de code:
Last login: Thu Sep 26 22:16:02 on ttys000
Mac-de-MSJB:~ koenraad$ cd "/Users/koenraad/Music/Partitions Sibelius converties en xml"
Mac-de-MSJB:Partitions Sibelius converties en xml koenraad$ list=$(find . -name "*.xlm")
Mac-de-MSJB:Partitions Sibelius converties en xml koenraad$ echo $list
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 977
746
Remplace alors xlm par xml dans toutes les commandes ;)
Je pense que tu t'es trompé dans ton premier poste :)
 

Kambro

Membre junior
22 Avril 2017
37
1
37
Navré, mais cela ne fonctionne pas.
Je pense qu'il serait déraisonnable de vous faire prendre plus de temps sur un travail qui ne doit être fait qu'une fois.
Je vous remercie encore pour vos recherches.
 

ecatomb

Membre d’élite
Club MacG
21 Septembre 2016
2 977
746
Difficile de connaître l’origine du problème. Cela fonctionne très bien chez moi (cf mon poste avec la liste des dossier et leur contenu)
L’extension n’était pas bonne dans votre poste d’origine. Si cela se trouve vous avez fait d’autre erreur dans votre explication...