306 votes

Copier les fichiers d'un répertoire dans un répertoire existant

En bash je dois faire ceci:

  1. prendre tous les fichiers dans un répertoire

  2. copiez-les dans un répertoire existant

Comment puis-je faire cela? J'ai essayé cp -r t1 t2 (t1 et t2 sont des répertoires existants, t1 contient des fichiers) mais il a créé un répertoire appelé t1 dans t2, je ne veux pas de ça, j'ai besoin des fichiers dans t1 pour aller directement à l'intérieur de t2. Comment puis-je faire cela?

481voto

Nick Points 1582

Ce que tu veux c'est:

 cp t1/. t2/ -R
 

Le point à la fin lui indique de copier le contenu du répertoire en cours, pas le répertoire lui-même. Cette méthode inclut également les fichiers et dossiers cachés.

45voto

Bertrand Marron Points 9284
 cp dir1/* dir2
 

Ou si vous avez des répertoires à l'intérieur de dir1 que vous voudriez également copier

 cp -r dir1/* dir2
 

36voto

Karl Giesing Points 354

Si vous voulez copier quelque chose d'un répertoire dans le répertoire actuel , procédez comme suit:

 cp dir1/* .
 

Cela suppose que vous n'essayez pas de copier des fichiers cachés.

6voto

Gordon Davisson Points 22534
 cp -R t1/ t2
 

La barre oblique de fin sur le répertoire source modifie légèrement la sémantique, de sorte qu'elle copie le contenu mais pas le répertoire lui-même. Cela évite également les problèmes de fichiers globulants et invisibles de la réponse de Bertrand (la copie de t1/* manque des fichiers invisibles, la copie de «t1 / * t1 /.*» copie les copies t1 /. je ne veux pas.

2voto

Jim Dennis Points 5454

Selon certains détails que vous pourriez avoir besoin de faire quelque chose comme ceci:

r=$(pwd)
case "$TARG" in
    /*) p=$r;;
    *) p="";;
    esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"

... au fond, les changements dans le répertoire SRC et la copie de la cible, puis revient à où jamais vous avez commencé.

Le supplément de plaisanter est de gérer relative ou absolue des cibles.

(Ceci ne repose pas sur de subtils de la sémantique de l' cp commande en elle-même ... au sujet de la façon dont il traite de la source de spécifications avec ou sans fuite / ... puisque je ne suis pas sûr que ceux qui sont stables, portable et fiable au-delà de juste GNU cp et je ne sais pas si ils vont continuer de l'être dans le futur).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X