Unix - kopiowanie zawartości jednego katalogu do drugiego [zamknięte]

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

> mkdir Folder2/

> [copy command]

A teraz Folder2/wygląda tak:

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

Jak to zrobić? Próbowałem, cp -r Folder1/ Folder2/ale skończyło się na:

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

Co jest bliskie, ale nie dokładnie to, czego chciałem.

Dzięki!

JDS
źródło

Odpowiedzi:

124

Spróbuj tego:

cp Folder1/* Folder2/
Geoff
źródło
3
ale to nie skopiuje ukrytych plików, prawda?
Fabrizio Regini
9
Poprawny. cp -Rwill, ale to będzie rekurencyjnie kopiowane, więc możesz tego użyć lub nie. Możesz zrobić, cp Folder1/.* Folder2/aby skopiować tylko ukryte pliki.
Geoff
1
Zauważ, że to się nie powiedzie, jeśli używasz "sudo" lub jego odpowiednika, a katalog zawiera dużo plików. Dostajęsudo: unable to execute /bin/cp: Argument list too long
Nathan Osman
zwróć uwagę, że SCP ma nieco inną składnię, patrz tutaj: stackoverflow.com/a/26346339/1984636
sivi
Nie rób tego. Wykonaj „cp -rT src dest” na Linuksie lub „cp -R src / dest” na BSD.
xpusostomos
47

Całkiem proste, z *symbolem wieloznacznym.

cp -r Folder1/* Folder2/

Ale zgodnie z twoim przykładem rekursja nie jest potrzebna, więc wystarczy:

cp Folder1/* Folder2/

EDYTOWAĆ:

Lub pomiń mkdir Folder2część i po prostu biegnij:

cp -r Folder1 Folder2
Koen.
źródło
Jeśli ls | sort -k1.5 | head -8 > folder1więc jak to zrobić?
Pooja
Właśnie straciłeś wszystkie ukryte pliki. Nie rób tego. Wykonaj „cp -rT src dest” na Linuksie lub „cp -R src / dest” na BSD.
xpusostomos
23

Aby wykonać dokładną kopię, uprawnienia, własność i wszystko to użyj „-a” z „cp”. „-r” skopiuje zawartość plików, ale niekoniecznie pozostawi inne rzeczy bez zmian.

cp -av Źródło / * Dest /

(upewnij się, że miejsce docelowe / istnieje jako pierwsze)

Jeśli chcesz wielokrotnie aktualizować z jednego do drugiego lub upewnić się, że skopiowałeś również wszystkie pliki dotfiles, rsyncjest to bardzo pomocne:

rsync -av --delete źródło / cel /

Jest to również możliwe do odzyskania, ponieważ można je ponownie uruchomić, jeśli przerwiesz kopiowanie. Lubię "-v", ponieważ pozwala ci obserwować, co się dzieje, ale możesz to pominąć.

Brian White
źródło
1
co to jest -vza?
HattrickNZ
gadatliwy, tylko po to, by zobaczyć, co się dzieje.
Brian White
1
Jeśli masz dużo plików, -vopcja może zająć trochę czasu. Jeśli nie potrzebujesz wyjścia, użyj -atylko.
Eyal Levin
1
Aby kopia została spowolniona przez wyjście tekstowe, musiałbyś mieć dość wolne połączenie sieciowe. I nawet wtedy prawdopodobnie byłby to powrót wiersza polecenia, a nie sama kopia.
Brian White
Zgubiłeś swoje ukryte pliki. Wykonaj „cp -rT src dest” na Linuksie lub „cp -R src / dest” na BSD.
xpusostomos