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



## Kambro (26 Septembre 2019)

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


----------



## Membre supprimé 1129907 (26 Septembre 2019)

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 (26 Septembre 2019)

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 ?


----------



## Membre supprimé 1129907 (26 Septembre 2019)

Un script shell. Bon, cela a l'air de marcher:

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

```
cd "/Users/Kambro/mon_dossier"
```

Pour récupérer la série de tous les fichiers xlm

```
list=$(find . -name "*.xlm")
```

Pour en faire une copie dans les autres dossiers (sans les supprimer du dossier source)

```
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 (26 Septembre 2019)

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.


----------



## Membre supprimé 1129907 (26 Septembre 2019)

C'est ce que j'ai dans mon test. 3 fichiers xml dans le dossier1.
Qu'as-tu eu d'affiché ?


----------



## Kambro (26 Septembre 2019)

D'affiché sur le terminal : rien de plus que ce que j'y ai inséré. Cela finissait donc par "done"


----------



## Membre supprimé 1129907 (26 Septembre 2019)

Fait donc ça et poste le résultat:

```
cd "/Users/Kambro/mon_dossier"
list=$(find . -name "*.xlm")
echo $list
```


----------



## Kambro (26 Septembre 2019)

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


----------



## Membre supprimé 1129907 (26 Septembre 2019)

Remplace alors xlm par xml dans toutes les commandes 
Je pense que tu t'es trompé dans ton premier poste


----------



## Kambro (27 Septembre 2019)

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.


----------



## Membre supprimé 1129907 (27 Septembre 2019)

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


----------

