Przenieś zawartość folderu do folderu nadrzędnego - Linux Command Line


18

Mam folder A, który zawiera folder B zawierający wiele plików. Chciałbym się pozbyć folderu B, ale nie jego zawartości. Chcę, aby te treści były w folderze A. Jak mogę to zrobić w wierszu polecenia?

Odpowiedzi:


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

1
folder mvB / *. ? co to za kropka
NewLinuxUser

8
Uważaj na pliki kropkowe (pliki, których nazwa zaczyna się od.), Ponieważ nie będą one zawierać tych plików. Czy mv folderB/.* .też je przenieś. @NewLinuxUser, kropka w pytaniu jest aliasem katalogu roboczego (w tym przypadku folderu A).
Brian

1
To się nie powiedzie, jeśli folderB/folderBistnieje, więc wystrzegaj się używania go w skryptach.
Filipiny

1
To również kończy się niepowodzeniem, jeśli folderBzawiera niesamowitą liczbę plików. Zobaczysz z bash: /bin/mv: Argument list too longpowodu użycia *. Jeśli tak jest w przypadku użycia mvw połączeniu z, findjak podano przez @amphetamachine, lub zfor loop
Javier de la Rosa

2

Szybka odpowiedź:

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

Odporna na kod odpowiedź:

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"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.