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?
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:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
mv folderB/.* .untuk memindahkan mereka juga. @NewLinuxUser, titik dalam pertanyaan Anda adalah alias untuk direktori kerja (dalam hal ini, folderA).
folderB/folderBada, jadi berhati-hatilah menggunakannya dalam skrip.
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
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"