Pindahkan isi folder ke folder induk - Linux Commandline

18

Saya memiliki folderA yang berisi folderB yang berisi banyak file. Saya ingin menyingkirkan folderB, tetapi tidak isinya. Saya ingin konten tersebut berada di dalam folderA. Bagaimana saya bisa mencapai ini di commandline?

NewLinuxUser
sumber

Jawaban:

28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
Dijeda sampai pemberitahuan lebih lanjut.
sumber
1
mv folderB / *. ? apa titiknya?
NewLinuxUser
8
Hati-hati terhadap file dot (file yang namanya dimulai dengan.) Karena ini tidak termasuk file dot. Lakukan mv folderB/.* .untuk memindahkan mereka juga. @NewLinuxUser, titik dalam pertanyaan Anda adalah alias untuk direktori kerja (dalam hal ini, folderA).
Brian
1
Ini gagal jika folderB/folderBada, jadi berhati-hatilah menggunakannya dalam skrip.
filipos
1
Ini juga gagal jika folderBberisi jumlah file yang gila. Anda akan melihat bash: /bin/mv: Argument list too longkarena penggunaan *. Jika itu yang digunakan kasus mvdalam kombinasi dengan findseperti yang dinyatakan oleh @amphetamachine, atau denganfor loop
Javier de la Rosa
2

Jawaban cepat:

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

Kode-hardy jawaban:

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
sumber