Wie verschiebe ich einen Unterordner mit Inhalt ohne Kopieren in einen anderen Quellordner?

Wie verschiebe ich einen Unterordner mit Inhalt ohne Kopieren in einen anderen Quellordner?

Ich weiß, dass die Frage schon millionenfach gestellt wurde, aber ich kann die Antwort auf mein konkretes Anliegen nicht finden.

Hier ist die Verzeichnisstruktur:

Main Folder1
|
|-Subfolder 1
|-Subfolder 2 HasAReallyLongName
|---files
|-Subfolder 3-1000

Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
  • Ich möchte versuchen, Unterordner2 mit seinen Dateien in ein anderes Verzeichnis zu verschieben.
  • Ich möchte nichts kopieren und dann entfernen, da ich nicht genügend Speicherplatz habe.
  • Ich möchte das nicht, mv /Main/Sub2/* /Main2/da dann alles in den /Main2Ordner und nicht in ein Unterverzeichnis gelegt wird.
  • Ich möchte das nicht, mkdir /Main2/...weil es ein wirklich langer Name ist (hauptsächlich Zeitstempel) und ich ihn nicht manuell eingeben möchte (und ihn wahrscheinlich durcheinanderbringen würde).
  • Soweit ich weiß, rsyncwerden die Dateien auch kopiert, daher bin ich nicht sicher, ob es funktionieren würde.

Ich bin für alle Vorschläge oder andere Tools sehr dankbar!

Antwort1

Das ist völlig unkompliziert.

mv /Main1/Sub2 /Main2

Dadurch wird das Verzeichnis /Main2/Sub2mit dem gesamten Inhalt des Originals erstellt und das Verzeichnis gelöscht /Main1/Sub2. Wenn Sie nicht den vollständigen Namen eingeben möchten, können Sie einen Glob verwenden. Hören Sie einfach auf, den Namen einzugeben, und beenden Sie mit , *wenn Sie genügend Zeichen eingegeben haben, um den Verzeichnisnamen von allem anderen im Verzeichnis zu unterscheiden (seien Sie vorsichtig!):

mv /Main/Sub* /Main2

Mögliche Probleme, die dazu führen könnten, dass dies nicht wie erwartet funktioniert:

  • Es gibt bereits ein Verzeichnis /Main2mit demselben Namen wie /Main1/Sub2. Dies verursacht den Fehler directory not empty, ebenso wie mvdie Weigerung, das vorhandene Verzeichnis zu überschreiben. Wenn dies der Fall ist, benennen Sie /Main2zuerst das vorhandene Verzeichnis in um (oder entfernen Sie es):

    mv /Main2/Sub2 /Main2/SomethingElse
    
  • Verwenden Sie einen falschen Pfad. Denken Sie daran, dass alles zwischen Groß- und Kleinschreibung unterscheidet, und achten Sie auf relative Pfade und ~Erweiterungen. Diese sind alle je nach aktuellem Arbeitsverzeichnis unterschiedlich.

    /Main1/Sub2
    Main1/Sub2
    ~/Main1/Sub2
    
  • Sie haben keine Berechtigung, in das Quell- und/oder Zielverzeichnis zu schreiben. Dies wird aus der Fehlermeldung deutlich ersichtlich: mv: cannot move 'thing' to '/place': Permission denied. In diesem Fall können Sie meinen bevorzugten Befehl ausführen, um das Problem zu beheben.

    sudo !!
    

Antwort2

Verstanden: sudo mv /Main1/Sub2 /Main2Bei mir hat es funktioniert. Der Hauptunterschied ist, dass man Root ist, nehme ich an.

verwandte Informationen