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.