cp -av Verdopplungsverzeichnis

351
Jake
cp -av /home/jake/transit/scalaProjects/scalaML/src/main/scala /home/jake/project/__workspace/scalaProjects/scalaML/src/main/scala  cp -av /home/jake/transit/scalaProjects/scalaML/src/test/scala /home/jake/project/__workspace/scalaProjects/scalaML/src/test/scala 

Die erste Zeile wird nach / src / main / scala kopiert

ABER

die zweite kopie nach / src / test / scala / scala

Ich bin auf dem Ubuntu-Server 16.

Ich bin sicher, dass mir etwas fehlt, aber ich bin verwirrt. Jede Hilfe wäre dankbar

0
Schauen Sie sich die Quellverzeichnisse an. Ich vermute, Sie finden den gesamten Code in ... / test / scala / scala davidgo vor 6 Jahren 0

2 Antworten auf die Frage

1
Kamil Maciorowski

Betrachten cp a b/c.

  1. Wenn ces nicht existiert (und es nicht gibt b), wird es als Name für die Kopie von interpretiert a, also enden Sie mit b/c.

  2. Wenn cjedoch vorhanden ist und es sich um ein Verzeichnis handelt, wird es als Pfad interpretiert, an dem ader Name unter dem unveränderten Namen platziert awerden soll b/c/a.

Ich denke, dass es am Anfang /home/jake/project/__workspace/scalaProjects/scalaML/src/main/scalanicht existiert, es gibt nur /home/jake/project/__workspace/scalaProjects/scalaML/src/main/.

Ihr erster Befehl erstellt scaladie Funktion als (1). Es kann etwas verwirrend sein, weil Sie scalaanstelle von a und haben c, und daher ist es nicht offensichtlich, dass eine geringfügige Umbenennung (von scalabis scala) stattfindet. Dann fungiert der zweite Befehl als (2).


Dieser Befehl wird als erster Befehl ausgeführt, unabhängig davon, ob das Ziel scalavorhanden ist oder nur /home/jake/project/__workspace/scalaProjects/scalaML/src/main/vorhanden ist:

cp -av /home/jake/transit/scalaProjects/scalaML/src/main/scala /home/jake/project/__workspace/scalaProjects/scalaML/src/main/ 

Aber wenn /home/jake/project/__workspace/scalaProjects/scalaML/src/main/nicht vorhanden ist und /home/jake/project/__workspace/scalaProjects/scalaML/src/tut, Sie scalawird es unter dem Namen gestellt werden main. Das ist wieder Verhalten (1).

Um diese Mehrdeutigkeit zu beseitigen, verwenden Sie-t :

cp -av /home/jake/transit/scalaProjects/scalaML/src/main/scala -t /home/jake/project/__workspace/scalaProjects/scalaML/src/main/ 

Dies macht cpinterpret mainals ein Verzeichnis, in dem Sie platzieren möchten scala. Es findet keine Umbenennung statt. Wenn /home/jake/project/__workspace/scalaProjects/scalaML/src/main/nicht vorhanden, cpwird ein Fehler ausgegeben.

Kamil, deine Antwort war hilfreich ... aber das Problem war mit einer versteckten Datei (siehe meine Antwort unten). Jake vor 6 Jahren 0
0
Jake

Ich habe das Problem und die Lösung gefunden. Eine versteckte Datei blieb im Verzeichnis, obwohl ich zuvor versucht hatte, das Verzeichnis vollständig zu löschen ( rm -rf).

Diese Datei .fuse_hiddenwurde vom Dateisystem erstellt, da in einer SFTP-Serversitzung noch eine Verknüpfung zu der Datei vorhanden war. (Ich hatte zuvor eine Datei in diesem Verzeichnis über mobaxterm geöffnet).

Das Schließen der Sitzung auf meinem mobaxterm-Terminal, das die Datei geöffnet hatte, führte dazu, dass die versteckte Datei entfernt wurde, und alles andere funktionierte einwandfrei. Beachten Sie, dass das Herunterfahren der Datei, die ich aus der Ferne geöffnet hatte, nicht ausreichte, um das Problem zu lösen.

Siehe hier für eine bessere Erklärung