Jak skopiować folder z plikami do innego folderu w systemie Unix / Linux? [Zamknięte]


1191

Mam problemy z skopiowaniem folderu z plikami w tym folderze do innego folderu. Polecenie cp -rnie kopiuje plików w folderze.




Chciałbym, aby można było to przenieść do SE, gdzie jest więcej na ten temat.
jrh

6
Programowanie w Bash jest tematem .
xskxzr

Odpowiedzi:


1978

Opcja, której szukasz, to -R.

cp -R path_to_source path_to_destination/
  • Jeśli destinationnie istnieje, zostanie utworzony.
  • -Rśrodki copy directories recursively. Możesz także użyć, -rponieważ nie uwzględnia wielkości liter.
  • Zwróć uwagę na niuanse związane z dodawaniem końcowego /zgodnie z komentarzem @ muni764 .

5
Zastanawiam się, dlaczego to dokładne polecenie w pliku dokera kopiuje wszystkie źródłowe pliki katalogu do miejsca docelowego zamiast kopiować tylko cały katalog.
holms

4
Uważam, że „/” na końcu robi różnicę i może to tłumaczyć twoje wrażenia. Jeśli źródło zawiera ukośnik końcowy, skopiuje tylko to, co znajduje się w katalogu. Jeśli nie zawiera ukośnika końcowego, skopiuje również katalog, a następnie zawartość w nim zawartą. Moja pamięć polega na tym, że zachowanie to różni się w zależności od polecenia, a może trochę w zależności od systemu operacyjnego. Oto odniesienie z więcej informacji.
OllieBrown

23
Powiedziałbym, że jeśli nie chcesz dołączyć źródła i chcesz się upewnić, że wszystko zostało skopiowane (dowiązania symboliczne, ukryte pliki) bez kopiowania źródłowego folderu nadrzędnego, użyj -ra source /. Miejsce docelowe. Dzięki temu zawartość folderu zostanie skopiowana, ale nie sam folder macierzysty, co czasem jest przydatne. Różnica polega na /.
muni764

Wydaje się to również działać poprawnie, jeśli katalogi, które mają zostać skopiowane, są dowiązaniami symbolicznymi, co było moim przypadkiem użycia.
Gdalya,

3
Zwróć uwagę na znaczenie „Slash dot” w twoim źródle cp -r src/. dest, ponieważ wiem, że jest wspomniane, ale nadal wydaje mi się, że tęsknię za każdym razem.
bbeecher,

368

Szukasz cppolecenia. Musisz zmienić katalogi, aby znaleźć się poza katalogiem, który próbujesz skopiować.

Jeśli katalog, który kopiujesz, nazywa się dir1i chcesz go skopiować do swojego /home/Picturesfolderu:

cp -r dir1/ ~/Pictures/

Linux rozróżnia małe i wielkie litery, a także potrzebuje /po każdym katalogu, aby wiedzieć, że nie jest to plik. ~jest znakiem specjalnym w terminalu, który automatycznie przekształca się w katalog domowy bieżącego użytkownika. Jeśli chcesz wiedzieć, w którym katalogu się znajdujesz, użyj polecenia pwd.

Jeśli nie wiesz, jak korzystać z polecenia systemu Linux, istnieje strona podręcznika, do której możesz się odwołać, wpisując:

man [insert command here]

na monit terminalu.

Ponadto, aby automatycznie uzupełniać długie ścieżki plików podczas pisania w terminalu, możesz nacisnąć Tabpo rozpoczęciu wpisywania ścieżki i albo zostanie wyświetlony wybór, albo wstawi ona pozostałą część ścieżki.


6
W celu dalszego wyjaśnienia, -ropcja w tym spowoduje kopiowanie katalogów rekurencyjnie.
TVann

5
Czy PO nie określają, że on został przy użyciu cp -rpolecenia, ale to nie działa prawidłowo?
MD XF,

4
Powodem, dla którego podałem informacje o stronach podręcznika, jest to, że te flagi mogą być zależne od dystrybucji. Jednak w większości przypadków okazuje się, -r, --recursive, i -Rsą równoważne. Daje to również częste pułapki itp., Co jest miłe.
Alex W

6
Jeśli chcesz przenośnie skopiować KATALOG, a nie tylko jego zawartość, zostaw końcowy myślnik w folderze źródłowym, tj. cp -r dir1 ~/Pictures/
mehtunguh

105

Posługiwać się:

$ cp -R SRCFOLDER DESTFOLDER/

4
tak to zrobiłem i demo1_copyjeszcze nie istniałem$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.