Ordnerinhalte in den übergeordneten Ordner verschieben - Linux Commandline


18

Ich habe einen Ordner A, der Ordner B enthält, der viele Dateien enthält. Ich möchte folderB loswerden, aber nicht dessen Inhalt. Ich möchte, dass sich diese Inhalte in Ordner A befinden. Wie kann ich das auf der Kommandozeile erreichen?

Antworten:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
mv folderB / *. ? Was ist der Punkt?
NewLinuxUser

8
Achten Sie auf Punktdateien (Dateien, deren Name mit. Beginnt), da diese nicht enthalten sind. Tun Sie dies auch mv folderB/.* ., um sie zu bewegen. @NewLinuxUser, der Punkt in Ihrer Frage ist ein Alias ​​für das Arbeitsverzeichnis (in diesem Fall OrdnerA).
Brian

1
Falls folderB/folderBvorhanden, schlägt dies fehl. Achten Sie daher darauf, dass Sie es nicht in Skripten verwenden.
Filipos

1
Dies schlägt auch fehl, wenn folderBeine verrückte Anzahl von Dateien enthalten ist. Sie werden bash: /bin/mv: Argument list too longaufgrund der Verwendung von sehen *. Wenn dies der Fall ist, verwenden Sie es mvin Kombination mit find@amphetamachine oder mit einemfor loop
Javier de la Rosa

2

Schnelle Antwort:

cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB

Code-harte Antwort:

cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"
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.