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?

Jawaban:


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

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"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.