Verschieben aller Dateien von einem Ordner in einen übergeordneten Ordner


2

Ich suchte nach der Antwort auf die Frage, wie Dateien von einem Ordner in einen übergeordneten Ordner verschoben werden sollen, und habe die Antwort nirgends gefunden mv name/* .

Warum kann ich damit keine Dateien in einen höheren Ordner verschieben? Die am häufigsten gewählte Option ist mv * .[^.]* .., also meine Frage ist, warum mv name/* .ist falsch?

Grüße

Antworten:


2

Wegen Ballern . mv name/* .Stimmt nur mit Dateien im Ordner überein, die nicht mit einem Punkt ( .) beginnen. Sie können dieses Verhalten ändern, indem Sie dotglob in einer Bash-Shell festlegen :

shopt -s dotglob

Jetzt können Sie mv name/* .ALLE Dateien und Ordner verschieben.

Als Beispiel ist ein Ordner mit zwei Dateien: fileund .file:

$ echo *
file
$ shopt -s dotglob
$ echo *
file .file

Hinweis: Funktioniert mv * .[^.]* destination ohne das Punkt-Symbol, da es zuerst *und dann .[^.]*mit Dateien / Ordnern übereinstimmt, die mit einem Punkt beginnen (nicht .und ..).


0

Möglicherweise müssen Sie auch .*nicht nur übereinstimmen , *wenn das Archiv Punktedateien enthielt.

Fügen Sie außerdem && rmdir folderdas Ende hinzu, um den jetzt nicht mehr benötigten Ordner zu entfernen. Dies ist sicher, weil es nur ausgeführt wird, wenn der Befehl mv Erfolg zurückgibt UND weil rmdir kein nicht leeres Verzeichnis entfernt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.