Frage Was bedeutet "cp: Verzeichnis auslassen"?


Ich habe den folgenden Befehl ausgegeben:

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

Wenn ich das mache, bekomme ich die folgenden Nachrichten:

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' 

und so weiter...

Warum bekomme ich diese Nachrichten?


365
2018-04-18 15:11


Ursprung




Antworten:


Standardmäßig, cp kopiert nur die direkten Dateien in und nicht die Unterverzeichnisse im Verzeichnis. Die Nachricht cp: omitting directory 'directory' warnt Sie, dass das erwähnte Verzeichnis nicht kopiert wird.

Geben Sie dazu die Option -r (oder --recursive) Möglichkeit:

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

Das Handbuchseite (Befehl: man cp) enthält eine Übersicht der verfügbaren Optionen.


476
2018-04-18 15:15



Danke vielmals. Ich dachte, dass es sich irgendwie rekursiv damit beschäftigen wird. Aber nein. : D Nochmals vielen Dank. :) - MEM
@ MEM: die * wird von Bash erweitert, nicht von cp. Teste es selbst, indem du es setzt echo  vor deinem Befehl. Wenn es erweitert wird, passt es alles mit einem vorhergehenden zusammen ...library/Zend/ (die Dateien und Verzeichnisse darin). - Lekensteyn
Gute Neuigkeiten sind das omitting directory 'directory' bedeutet nicht, dass es dieses Verzeichnis löscht. - Bishwas Mishra
@Lekensteyn Ich habe versucht, den Inhalt eines Benutzers zu einem anderen zu kopieren. So habe ich die Erlaubnis vom Benutzer mit erhalten chmod a+rx ~/ nachdem ich versucht habe mit zu kopieren cp /home/2110/* /home/2111/ es erzeugt einen Fehler, der besagt, dass die Berechtigung verweigert wurde. wo ich falsch lag. Entschuldigung, um zu kommentieren, weil ich doppelte Fragen nicht stellen kann. Ich hoffe auf schnelle Antwort :) - jasinth premkumar
@jasinthpremkumar Dateien in /home/2110 sind im Besitz von Benutzer 2110 während Dateien in /home/2111 sollen im Besitz von 2111 sein. Um den Besitzer festzulegen, verwenden Sie etwas wie sudo chown -R 2111 /home/2111. - Lekensteyn


Die Nachricht bedeutet das cp hat die aufgelisteten Verzeichnisse nicht kopiert. Dies ist das Standardverhalten für cp - Nur Dateien werden normal kopiert, unabhängig davon, ob Sie sie explizit angeben oder verwenden *. Wenn Sie Verzeichnisse kopieren möchten, verwenden Sie die -r Schalter, der "rekursiv" bedeutet.


34
2018-04-18 15:15





Hier einige Dinge, die überprüft werden müssen:

  1. Benutze es nicht sudo. Du brauchst es nicht, du hast bereits die Erlaubnis, Sachen in dein eigenes Home-Verzeichnis zu schreiben.

  2. Sie können verdeckte Dateien und Verzeichnisse im grafischen Dateimanager leicht anzeigen, indem Sie im Menü Ansicht / Versteckte Dateien anzeigen auswählen. Oder durch Drücken von Strg - H.

  3. Sie müssen das verwenden -R Option in der cp Befehl zum Kopieren eines Verzeichnisses und dessen Inhalt.

  4. / home ist nicht dein Home-Verzeichnis. / home / Benutzername ist. Sie versuchen wahrscheinlich, von einem falschen Ort zu kopieren.

  5. Die Shell ist case sensitive, also ~ / downloads und ~ / Downloads sind zwei verschiedene Dinge.


14
2017-10-04 07:02





Wenn Sie ein Verzeichnis kopieren wie:

cp dir1 copy_of_dir1

Du kopierst nur und genau das dir1 selbst und nicht die Dateien darin, so dass am Ende Sie mit einer neuen Verzeichnisstruktur enden, während die Struktur nicht existiert.

Mit anderen Worten, nachdem es kopiert wurde, wird es sagen, dass mein Inhalt ist file1, file2, etc; Diese Dateien wurden jedoch nicht kopiert und sind daher nicht darin enthalten.

Also, um dieses Problem zu beheben, das aufkam cp Standardmäßig kopiert sie die Verzeichnisse nicht und überspringt sie, wenn Sie nicht angeben -r Option, die alle Dateien auch rekursiv kopiert.


2
2017-07-03 07:47





Der Grund, warum es sagt omitting directory Denn cp und alle Kopierprogramme, die ich kenne, erstellen eine Liste von Dateien und Unterverzeichnissen, die kopiert werden sollen, bevor mit dem Kopieren der Dateien begonnen wird. Wenn das --recursive Optionen fehlen, Unterverzeichnisse werden von dieser Liste entfernt. Auslassen bezieht sich daher auf das Entfernen von der Kopierliste, nicht von Ihrem Quellmedium. Ich glaube, das spricht die Bedeutung der Nachricht an.


1
2017-07-24 08:32





Angenommen, Sie haben zwei Verzeichnisse "Tag" & "Test"

Wenn Sie das Verzeichnis "Tag" in das Verzeichnis "Test" kopieren möchten, verwenden Sie den Befehl

$ : cp -r Tag Test (case sensitive)

Meistens wird das Problem mit dem obigen Code gelöst, wenn nicht und Sie erhalten eine Nachricht wie

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

Fügen Sie dann einige Dateien im Verzeichnis "Tag" hinzu und kopieren Sie diese dann in "Test". Eigentlich habe ich dasselbe Problem aber gelöst wie das, was ich als zweites gesagt habe.


-1
2017-07-03 07:14