Copie de fichiers

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. Contributeur
    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
    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
      0
      1. Contributeur
        À 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
    2. Merci beaucoup, je vais tester ton script ce soir en rentrant.
      Je te tiens au courant
      0
      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
        0
        1. Contributeur
          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