Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/09/2014, à 11:19

Elève linuxien

[ Résolu ] Commande CP dans plusieurs dossiers

Gooooood Mooooorning Ubuntu people,

J'essaie de copier un dossier et son contenu dans plusieurs dossiers mais j'y arrive po...

Explication : j'ai un dossier "type" que je veux retrouver dans tous les sous-dossiers existants (plusieurs centaines) d'un dossier et je vous lais le faire avec la commande CP.
je veux que "DossierTest" se retrouve dans tous les sous-dossiers de "DossierDestination", alors j'ai fait :

cp -r DossierTest /DossierDestination/*

Quelqu'un peut il me dire si je suis sur la bonne piste ou si il faut utiliser une autre commande ?

Merci d'avance:.

Dernière modification par Elève linuxien (Le 02/09/2014, à 12:49)


"Les ordinateurs sont inutiles : ils ne donnent que les réponses."
Pablo Picasso

Hors ligne

#2 Le 02/09/2014, à 11:55

αjet

Re : [ Résolu ] Commande CP dans plusieurs dossiers

Je pense que c'est pas tout a fait ca. La commade cp -r va coppier recursivement tous les dossiers de DossierTest dans /DossierDestination/. Note: je ne sais pas si le caractere * est valide dans cette situation et s'il influence les resultats.

Si j'ai bien compris ce que tu souhaites faire c'est copier DossierTest dans chacun des sous-dossiers de /DossierDestination. Si c'est le cas, en me basant sur ce script: http://stackoverflow.com/a/2108296, je ferais:

for dir in /DossierDestination/*/
do
    dest=${dir%*/}
    cp DossierTest $dest
done

A tester, je sais pas si la synthaxe est 100% correcte. L'argement -r est peut etre necessaire si ton dossier DossierTest contient des sous dossiers.


αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr

Hors ligne

#3 Le 02/09/2014, à 12:03

bruno

Re : [ Résolu ] Commande CP dans plusieurs dossiers

Autre solution :

cd /DossierDestination

find . -mindepth 1 -maxdepth 1 -type d -exec cp -r /chemin/du/dossierTest {} \;

Hors ligne

#4 Le 02/09/2014, à 12:18

αjet

Re : [ Résolu ] Commande CP dans plusieurs dossiers

bruno a écrit :

Autre solution :

 {} \;

Merci, pourrais tu me dire a quoi correspondent les parentheses {} et pourquoi il est necessaire d'echaper un point-virgule?


αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr

Hors ligne

#5 Le 02/09/2014, à 12:20

αjet

Re : [ Résolu ] Commande CP dans plusieurs dossiers

Je me reponds pour {}: c'est le dossier en cours, mais je ne sais toujours pas pourquoi la commande se termine par \; hmm


αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr

Hors ligne

#6 Le 02/09/2014, à 12:39

bruno

Re : [ Résolu ] Commande CP dans plusieurs dossiers

Quand on ne connaît pas bien une commande, il faut lire sa page de man : man find

-exec commande ;
              Exécuter  la  commande ; vrai si le code de retour 0 est renvoyé. Tous les paramètres qui suivent find
              sont considérés comme des paramètres pour la ligne de commande, jusqu'à la  rencontre  d'un  caractère
              « ; ».  La  chaîne « {} » est remplacée par le nom du fichier en cours de traitement, ceci dans toutes
              ses occurrences sur la ligne de commande, et pas seulement aux endroits  où  elle  est  isolée,  comme
              c'est le cas avec d'autres versions de find. Ces deux chaînes peuvent avoir besoin d'être protégées du
              développement de la ligne de commande par le shell, en utilisant le caractère d'échappement (« \ ») ou
              une  protection  par  des guillemets. Consultez la section EXEMPLES pour des exemples d'utilisation de
              l'option -exec. La commande indiquée est exécutée à chaque fois qu'un fichier correspond. La  commande
              est  exécutée depuis le répertoire de départ. Il existe d'inévitables problèmes de sécurité associés à
              l'usage de l'option -exec, c'est pourquoi vous devriez utiliser l'option -execdir à la place.

Hors ligne

#7 Le 02/09/2014, à 12:47

Elève linuxien

Re : [ Résolu ] Commande CP dans plusieurs dossiers

Wahou... Désolé alex63 si je n'utilise pas ton script, mais je viens de tester la commande de bruno et ça marche à merveille !!!

Là, je vous avoue que je suis bluffé par la rapidité des réponses et leurs efficacité.

Merci à vous !


"Les ordinateurs sont inutiles : ils ne donnent que les réponses."
Pablo Picasso

Hors ligne

#8 Le 02/09/2014, à 12:49

αjet

Re : [ Résolu ] Commande CP dans plusieurs dossiers

Pas de pb, la reponse de bruno est plus elegante, elle tient en une ligne.


αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr

Hors ligne

#9 Le 02/09/2014, à 15:30

nesthib

Re : [ Résolu ] Commande CP dans plusieurs dossiers

@αjet : et surtout la tienne risque de faire n'importe quoi, tu n'échappes pas la variable $dest, si elle contient des espaces ça ne fera pas le comportement attendu wink

@Elève linuxien : attention de poster dans les bonnes catégories, tu es HS dans « Trucs, astuces et scripts utiles », je déplace…


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#10 Le 02/09/2014, à 16:40

αjet

Re : [ Résolu ] Commande CP dans plusieurs dossiers

Merci pour la precision nesthib!


αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr

Hors ligne