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

Kambro

Membre confirmé
22 Avril 2017
44
4
41
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
 
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 ?
 
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 ?
 
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
 
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.
 
Fait donc ça et poste le résultat:
Bloc de code:
cd "/Users/Kambro/mon_dossier"
list=$(find . -name "*.xlm")
echo $list
 
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
 
Remplace alors xlm par xml dans toutes les commandes ;)
Je pense que tu t'es trompé dans ton premier poste :)
 
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.
 
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...