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/folderB
ada, jadi berhati-hatilah menggunakannya dalam skrip.
folderB
berisi jumlah file yang gila. Anda akan melihat bash: /bin/mv: Argument list too long
karena penggunaan *
. Jika itu yang digunakan kasus mv
dalam kombinasi dengan find
seperti 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"