Unix - copie le contenu d'un répertoire dans un autre [fermé]

90
Folder1/
    -fileA.txt
    -fileB.txt
    -fileC.txt

> mkdir Folder2/

> [copy command]

Et maintenant Folder2/ressemble à:

Folder2/
    -fileA.txt
    -fileB.txt
    -fileC.txt   

Comment y parvenir? J'ai essayé cp -r Folder1/ Folder2/mais j'ai fini avec:

Folder2/
    Folder1/
        -fileA.txt
        -fileB.txt
        -fileC.txt

Ce qui est proche mais pas exactement ce que je voulais.

Merci!

JDS
la source

Réponses:

124

Essaye ça:

cp Folder1/* Folder2/
Geoff
la source
3
mais cela ne copiera pas les fichiers cachés, non?
Fabrizio Regini le
9
Correct. cp -Rwill, mais cela copiera récursivement, donc vous pouvez ou non vouloir l'utiliser. Vous pouvez faire cp Folder1/.* Folder2/pour ne copier que les fichiers cachés.
Geoff
1
Notez que cela échouera si vous utilisez "sudo" ou un équivalent et que le répertoire contient beaucoup de fichiers. Je reçoissudo: unable to execute /bin/cp: Argument list too long
Nathan Osman
notez que SCP a une syntaxe légèrement différente, voir ici: stackoverflow.com/a/26346339/1984636
sivi
Ne fais pas ça. Faites "cp -rT src dest" sur Linux, ou "cp -R src / dest" sur BSD.
xpusostomos
47

Assez simple, avec un *joker.

cp -r Folder1/* Folder2/

Mais selon votre exemple, la récursivité n'est pas nécessaire, donc ce qui suit suffira:

cp Folder1/* Folder2/

ÉDITER:

Ou sautez la mkdir Folder2partie et exécutez simplement:

cp -r Folder1 Folder2
Koen.
la source
Si ls | sort -k1.5 | head -8 > folder1alors comment faire ça?
Pooja
Vous venez de perdre tous vos fichiers cachés. Ne fais pas ça. Faites "cp -rT src dest" sur Linux, ou "cp -R src / dest" sur BSD.
xpusostomos
23

Pour faire une copie exacte, les autorisations, la propriété et tout utiliser "-a" avec "cp". "-r" copiera le contenu des fichiers mais ne gardera pas nécessairement les autres éléments identiques.

cp -av Source / * Dest /

(assurez-vous que Dest / existe en premier)

Si vous souhaitez effectuer une mise à jour répétée de l'un à l'autre ou vous assurer de copier également tous les fichiers dotfiles, rsyncest d'une grande aide:

rsync -av --delete Source / Dest /

Ceci est également "récupérable" dans la mesure où vous pouvez le redémarrer si vous l'abandonnez pendant la copie. J'aime "-v" car il vous permet de regarder ce qui se passe mais vous pouvez l'omettre.

Brian White
la source
1
à quoi ça sert -v?
HattrickNZ
verbeux, juste pour regarder ce qui se passe.
Brian White
1
Si vous avez beaucoup de fichiers, l' -voption peut prendre un certain temps. Si vous n'avez pas besoin de la sortie, utilisez -auniquement.
Eyal Levin
1
Vous devrez utiliser une connexion réseau assez lente pour que la copie soit ralentie par la sortie de texte. Et même dans ce cas, ce ne serait probablement que le retour de l'invite de commande, pas la copie elle-même.
Brian White
Vous avez perdu vos fichiers cachés. Faites "cp -rT src dest" sur Linux, ou "cp -R src / dest" sur BSD.
xpusostomos