Co oznacza "cp: omitting directory"?

360

Wydałem następujące polecenie:

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Kiedy to zrobię, zaczynam otrzymywać następujące komunikaty:

cp: omitting directory 'Tag' 
cp: omitting directory 'Test' 
cp: omitting directory 'Text' 
cp: omitting directory 'TimeSync' 
cp: omitting directory 'Tool' 
cp: omitting directory 'Translate' 
cp: omitting directory 'Uri' 
cp: omitting directory 'Validate' 

i tak dalej ...

Dlaczego otrzymuję te wiadomości?

    
zadawane MEM 18.04.2011, 17:11
źródło

6 odpowiedzi

468

Domyślnie cp kopiuje tylko pliki bezpośrednie, a nie podkatalogi w katalogu. Komunikat cp: omitting directory 'directory' ostrzega, że ​​wspomniany katalog nie jest kopiowany.

Aby to zrobić, określ opcję -r (lub --recursive ):

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

strona podręcznika (polecenie: man cp ) zawiera przegląd dostępnych opcji.

    
odpowiedział Lekensteyn 18.04.2011, 17:15
źródło
33

Komunikat oznacza, że cp nie skopiował wymienionych katalogów. Jest to domyślne zachowanie dla cp - tylko pliki są kopiowane normalnie, niezależnie od tego, czy podajesz je explicitely, czy też używasz * . Jeśli chcesz kopiować katalogi, użyj przełącznika -r , co oznacza "rekursywny".

    
odpowiedział Roger Light 18.04.2011, 17:15
źródło
13

Kilka rzeczy, które trzeba sprawdzić:

  1. Nie używaj sudo . Nie potrzebujesz go, masz już uprawnienia do pisania rzeczy w swoim katalogu domowym.

  2. Możesz łatwo przeglądać ukryte pliki i katalogi w graficznym menedżerze plików, wybierając z menu polecenie Pokaż / Pokaż ukryte pliki. Lub naciskając Ctrl - H .

  3. Aby skopiować katalog i jego zawartość, musisz użyć opcji -R w komendzie cp .

  4. / home nie jest twoim katalogiem domowym. / home / nazwa użytkownika to. Prawdopodobnie próbujesz skopiować z niewłaściwego miejsca.

  5. W powłoce rozróżniana jest wielkość liter, więc ~ / downloads i ~ / Downloads to dwie różne rzeczy.

odpowiedział Nikunj K. 04.10.2013, 09:02
źródło
1

Podczas kopiowania katalogu takiego jak:

cp dir1 copy_of_dir1

Tylko kopiujesz sam dir1 , a nie pliki wewnątrz niego, więc na końcu skończysz z nową strukturą katalogów, podczas gdy struktura nie istnieje.

Innymi słowy po skopiowaniu, powie, że moja zawartość to file1 , file2 , itd .; Jednak te pliki nie zostały skopiowane, a zatem nie istnieją w nim.

Aby naprawić ten problem, który mógł pojawić się, cp domyślnie nie kopiuje katalogów i pomija je, chyba że podasz opcję -r , która również spowoduje rekursywne kopiowanie wszystkich plików.

    
odpowiedział Ravexina 03.07.2017, 09:47
źródło
0

Przyczyną tego jest omitting directory , ponieważ cp i wszystkie narzędzia do kopiowania, które znam, tworzą listę plików i podkatalogów do skopiowania przed rozpoczęciem kopiowania plików. Gdy brakuje opcji --recursive , podkatalogi zostają zduplikowane na tej liście. Jako takie pominięcie oznacza usunięcie z listy kopiowania, a nie z nośnika źródłowego. Uważam, że odnosi się to do znaczenia wiadomości.

    
odpowiedział endrias 24.07.2017, 10:32
źródło
-2

Załóżmy, że masz dwa katalogi "Tag" & amp; "Test"

Jeśli chcesz skopiować katalog "Tag" do katalogu "Test", użyj polecenia

$ : cp -r Tag Test (case sensitive)

W większości przypadków problem zostanie rozwiązany za pomocą powyższego kodu, a poniżej pojawi się komunikat

cp: omitting directory 'Tag' 
cp: omitting directory 'Test'

następnie dodaj kilka plików do katalogu 'Tag', a następnie skopiuj je do 'Testuj'. Właściwie to mam ten sam problem, ale rozwiązany jak to, co powiedziałem po drugie.

    
odpowiedział jainmiah shaik 03.07.2017, 09:14
źródło

Przeczytaj inne pytania na temat tagów