Copie de fichiers

Rius93 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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

4 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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) ?

    0
  2. Rius93 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      À 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
      0
  3. Rius93 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci beaucoup, je vais tester ton script ce soir en rentrant.
    Je te tiens au courant
    0
  4. Rius93 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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)
      0