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?

NewLinuxUser
quelle

Antworten:

28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
Bis auf weiteres angehalten.
quelle
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"
Amphetamachine
quelle