Copie de fichiers

Rius93 4 Messages postés vendredi 11 août 2017Date d'inscription 12 août 2017 Dernière intervention - 11 août 2017 à 15:09 - Dernière réponse : zipe31 35174 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention
- 13 août 2017 à 08:29
Bonjour,

J'ai actuellement un dossier avec plusieurs fichier dedans:

- test1.txt
- test2.txt
- test3.txt

J'ai un fichier avec des liens:

- /dossier1/sousdossier1/test1.txt
- /dossier1/sousdossier2/test2.txt
- /dossier2/sousdossier1/test3.txt

Comment pourrais-je faire pour copier tous les fichiers qui sont dans le même dossier en fonction du fichier avec les liens ?

J'espère avoir été clair.

Merci beaucoup
Afficher la suite 
4Messages postés vendredi 11 août 2017Date d'inscription 12 août 2017 Dernière intervention

6 réponses

Répondre au sujet
zipe31 35174 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 11 août 2017 à 15:29
0
Utile
Salut,
J'espère avoir été clair.
Oui, mais ça manque cruellement de précision ;-\
J'ai actuellement un dossier avec plusieurs fichier
Comment s'appelle-t-il ? Où se trouve-t-il ?
J'ai un fichier avec des liens
Où se trouve-t-il ?
/dossier1/sousdossier1/
Où se trouve "dossier1" (chemin complet) ?
/dossier2/sousdossier1/
Où se trouve "dossier2" (chemin complet) ?

Commenter la réponse de zipe31
Rius93 4 Messages postés vendredi 11 août 2017Date d'inscription 12 août 2017 Dernière intervention - 11 août 2017 à 15:51
0
Utile
1
Voici un exemple de ce qui se trouve dans mon fichier texte (j'ai environs 660 lignes :) )
Ce fichier texte est dans /home/rius/ mais je peut le bouger en cas de besoin

/home/rius/MTL/IVAO_MTL/IVAO_A10/model/RWAI A-10C_Empty.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A124/model/An-124-100.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A148/model/SBAI_An-148.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A148/model.158/SBAI_An-158.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A225/model/GAI_AN225_B.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A306/model.GE/TFS_A300-600_GE.mdl

Tous les fichiers qui sont dans le fichier texte existe déjà.

Dans le dossier /home/rius/NEW_MTL/ j'ai les fichiers:
- RWAI A-10C_Empty.mdl
- An-124-100.mdl
- SBAI_An-148.mdl
- SBAI_An-158.mdl
- GAI_AN225_B.mdl
- TFS_A300-600_GE.mdl

Ce que je recherche à faire, c'est copier tous les fichiers qui sont dans le dossier /home/rius/NEW_MTL/ pour qu'ils remplacent ceux qui sont dans le fichier texte

Exemple:

Le fichier /home/rius/NEW_MTL/RWAI A-10C_Empty.mdl doit remplacer le fichier /home/rius/MTL/IVAO_MTL/IVAO_A10/model/RWAI A-10C_Empty.mdl
Le fichier An-124-100.mdl doit remplacer le fichier /home/rius/MTL/IVAO_MTL/IVAO_A124/model/An-124-100.mdl
zipe31 35174 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 11 août 2017 à 16:09
À tester sur un petit bout de fichier. Le script tu le mets où tu veux (tant qu'à faire avec le le fichier à lire).

Si le résultat de la commande
echo cp blabla…  blabla…
est bon, tu supprimes le "
echo
" et les guillemets, mais tu rajoutes des guillemets autour des variables ${fich} et ${line} (
cp -v /home/rius/NEW_MTL/"${fich}" "${line}"
).

$ cat fich 
/home/rius/MTL/IVAO_MTL/IVAO_A10/model/RWAI A-10C_Empty.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A124/model/An-124-100.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A148/model/SBAI_An-148.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A148/model.158/SBAI_An-158.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A225/model/GAI_AN225_B.mdl
/home/rius/MTL/IVAO_MTL/IVAO_A306/model.GE/TFS_A300-600_GE.mdl


$ cat script_cp.sh 
#! /bin/bash

while read line
do
fich="${line##*/}"
echo "cp /home/rius/NEW_MTL/${fich} ${line}"
done < fich


$ ./script_cp.sh 
cp /home/rius/NEW_MTL/RWAI A-10C_Empty.mdl /home/rius/MTL/IVAO_MTL/IVAO_A10/model/RWAI A-10C_Empty.mdl
cp /home/rius/NEW_MTL/An-124-100.mdl /home/rius/MTL/IVAO_MTL/IVAO_A124/model/An-124-100.mdl
cp /home/rius/NEW_MTL/SBAI_An-148.mdl /home/rius/MTL/IVAO_MTL/IVAO_A148/model/SBAI_An-148.mdl
cp /home/rius/NEW_MTL/SBAI_An-158.mdl /home/rius/MTL/IVAO_MTL/IVAO_A148/model.158/SBAI_An-158.mdl
cp /home/rius/NEW_MTL/GAI_AN225_B.mdl /home/rius/MTL/IVAO_MTL/IVAO_A225/model/GAI_AN225_B.mdl
cp /home/rius/NEW_MTL/TFS_A300-600_GE.mdl /home/rius/MTL/IVAO_MTL/IVAO_A306/model.GE/TFS_A300-600_GE.mdl
Commenter la réponse de Rius93
Rius93 4 Messages postés vendredi 11 août 2017Date d'inscription 12 août 2017 Dernière intervention - 11 août 2017 à 16:12
0
Utile
Merci beaucoup, je vais tester ton script ce soir en rentrant.
Je te tiens au courant
Commenter la réponse de Rius93
Rius93 4 Messages postés vendredi 11 août 2017Date d'inscription 12 août 2017 Dernière intervention - 12 août 2017 à 14:49
0
Utile
1
Ton script fonctionne à merveille :) Merci beaucoup

Mais j'ai un petit soucis.
Lorsque j'ai converti en automatique les fichiers avec le logiciel MCX, il a renommer un peu les fichiers.
Ex: rwai a-10c_empty.mdl au lieu de RWAI A-10C_Empty.MDL

Comment pourrais faire pour renommer tous les fichiers en fonction du fichier "fich" dans ton dernier post ?

J'ai essayer de comprendre ton script, mais j'ai un peu de mal

Merci
zipe31 35174 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 13 août 2017 à 08:29
Les fichiers à convertir se trouvent où ?
Tous dans le même répertoire, ou bien dans des répertoires différents ?

Pour t'aider dans la compréhension du script :

À partir d'une variable
line="/home/rius/MTL/IVAO_MTL/IVAO_A10/model/RWAI A-10C_Empty.mdl"
:

nom="${line##*/}"
renverra ce qui se trouve après le dernier "/" (slash)
chemin="${line%/*}"
renverra ce qui se trouve avant le dernier "/" (slash)
Commenter la réponse de Rius93