Copier des fichier avec *

Bonjour,
Je suis un novice sous linux .Quand je suis sur le bureau depuis le terminal je tape par exemple "cp *.txt dossier2/" ce qui va me permettre de copier tout les .txt sur le bureau dans le dossier nommer "dossier2" . Oui mais j'ai plusieurs sous dossier sur mon bureau et dans chaque sous dossier il y a des fichier .txt .Quel commande me permet quand je suis sur le bureau avec le terminal de prendre tout les fichiers textes sur le bureau et tout les fichier texte dans les sous dossier du bureau et de les placer dans le dossier "dossier2"

Merci d'avance

9 réponses

  1. Contributeur
    hello
    copie tout les fichiers .txt sans copier l'arborescence dans dossier2
    find dossier1 -type f -name "*.txt" -exec cp {} dossier2 \;
    1. mkdir -p test/test1/test2 dest
      $ touch test/{,test1/{,test2/}}{foo,bar,baz}.txt
      $ shopt -s globstar
      $ printf '%s\n' **/*.txt
      test/bar.txt
      test/baz.txt
      test/foo.txt
      test/test1/bar.txt
      test/test1/baz.txt
      test/test1/foo.txt
      test/test1/test2/bar.txt
      test/test1/test2/baz.txt
      test/test1/test2/foo.txt
      $ cp **/*.txt dest/
      cp: n'écrasera pas « dest/bar.txt » qui vient d'être créé par « test/test1/bar.txt »
      cp: n'écrasera pas « dest/baz.txt » qui vient d'être créé par « test/test1/baz.txt »
      cp: n'écrasera pas « dest/foo.txt » qui vient d'être créé par « test/test1/foo.txt »
      cp: n'écrasera pas « dest/bar.txt » qui vient d'être créé par « test/test1/test2/bar.txt »
      cp: n'écrasera pas « dest/baz.txt » qui vient d'être créé par « test/test1/test2/baz.txt »
      cp: n'écrasera pas « dest/foo.txt » qui vient d'être créé par « test/test1/test2/foo.txt »
      $ shopt -u globstar
      comme vous le voyez, si des fichiers portent le même nom, ça va coincer, et il faudra scripter un "versionnement".
      1. Même la commande complète de "cp" ne marche pas !
        Mais comment faire pour déplacer tous les .txt de tous les sous dossier du bureau dans un dossier cible si il n'y a pas le paramètre -r ??

        Merci
        1. Essaie avec la commande complète :

          cp -r /home/user/Bureau/*.txt /dossier_de_destination 


          après peut-être que l'option de récursivité ne s'applique qu'aux dossiers et pas aux fichiers copiés.

          Non, pas de récursivité pour
          mv
          (heureusement d'ailleurs !)
          1. Bonjour,
            En fait mv n'a pas besoin de la récursivité car il déplace l'arborescence complète sans option.
            Si tu déplaces ton bureau, fait attention car tu en as besoin dans ton interface graphique.
        2. Heuu pour le paramètre -r de la commande "cp" ca ne marche pas j'ai plusieurs sous dossier sur mon bureau je fais "cp -r *.txt /dossiercible" et ca ne me prend que le .txt qu'il y a sur mon bureau
          Comment je fais pour la commande "mv" ? ça ne marche pas pareil
          1. Bonjour et bienvenue,

            la commande cp a une option qui permet la récursivité : -r
            Donc, tu devras taper cp -r /DossierContenantLesFichiers/*.txt /dossierCible
            Et il va même reconstituer l'arborescence, si tu es sage...

            Bien à toi.
            Jonas.
            --

            Une idée reçue est souvent une idée morte.
            1. Bonjour,

              Essaie avec l'argument -r (c'est la récursivité).

              Donc ta commande devient :
              cp -r *.txt doosier2/