Jawaban:
Dengan folder bernama 'myfolder' dan naik satu tingkat dalam hirarki file (titik yang Anda inginkan) perintahnya adalah:
mv myfolder/* .
Jadi misalnya jika data sudah di /home/myuser/myfoldermaka dari /home/myuser/jalankan perintah.
.*. Menghapus folder asli itu sepele dan tidak diminta, jadi kami akan membiarkan OP berurusan dengan itu sendiri.
*dan .*dalam satu baris? hanya ingin tahu
mvsemua akan menjadi sumber kecuali argumen TERAKHIR yang perlu menjadi target untuk memindahkan (dan dalam kasus beberapa sumber, perlu folder).
/bin/mv: Argument list too long
Hanya untuk membuatnya jelas, diambil dari jawaban Rudu di atas, dan komentar.
Jika Anda perlu memindahkan semua konten, TERMASUK file yang dimulai dengan a. (seperti .htaccess, .git, dll), Anda harus memasukkan * dan. * dalam perintah Anda. Seperti itu:
mv subfolder/* subfolder/.* .
Itu akan memindahkan konten subfolder ke folder Anda saat ini. Perhatikan spasi sebelum "." Yang terakhir.
mv: rename fake/. to ./.: Invalid argumentdanmv: rename fake/.. to ./..: Invalid argument
Ini dimungkinkan dengan metode berikut:
Menggunakan rsync:
rsync -vua --delete-after foo/ .Menggunakan cpdan rmdir:
cp -vaR foo/. . && rmdir foo/Menggunakan mv(dengan dotglobopsi diaktifkan):
shopt -s dotglob # Includes filenames beginning with a dot.
mv -- foo/* . # Where foo/ is the folder consisting the files.
shopt -u dotglob # Disables previously enabled dotglob option.
di mana foo/folder Anda yang isinya dipindahkan satu tingkat ke atas.
Lihat: help shoptdan man bash.
Menggunakan mv(seperti yang disarankan di sini ):
mv foo/* foo/.[^.]* . && rmdir foo/
Catatan: Ini akan melewatkan file yang disebut foo/..bar...
Catatan: Untuk kerang POSIX, Anda perlu [!.].
-v, -u, -adan -rlakukan? AFAICT, -vadalah verbose, yang hanya membuat rsync mencetak informasi lebih lanjut. -uberarti pembaruan - hanya menyalin file jika itu lebih baru. Itu sepertinya tidak relevan. -aberarti arsip. Itu akan menyalin pemilik dan izin file, dan membuat sinkronisasi rekursif. -rberarti rekursif, tapi itu sudah dicakup oleh -a.
-uberguna ketika Anda tidak ingin menghabiskan waktu ekstra untuk memindahkan data yang sudah ada (terutama untuk perangkat penyimpanan lambat). Saya sudah dihapus -r, karena dicakup oleh -aseperti yang Anda sebutkan.
mv foo/* foo/.[^.]* .akan melewatkan file yang dipanggil foo/..bar..misalnya. Perhatikan bahwa untuk kerang POSIX, Anda perlu [!.].
rsync -vua --delete-after foo/ .menghapus semua yang mungkin sudah ada di direktori saat ini.
cukup keluarkan perintah mv
mv (directory)/* .
jika Anda ingin menghapus direktori maka tambahkan
rm -rf (directory)
Diasumsikan bahwa Anda berada di direktori induk dari (direktori)
Jika Anda berada di dalam (direktori) itu
mv * ../
.DS_storedi macOS. The mvperintah di atas tidak akan memindahkan (tanpa dotglobset).
bagi Anda di server bersama Anda harus menggunakan sesuatu seperti ini
Untuk memindahkan file
mv -v ~/public_html/public_html/* ~/public_html/
Untuk menyalin file
cp -a ~/public_html/public_html/* ~/public_html/
.*tidak hanya*jika arsip berisi dot-file. Juga tambahkan `&& rmdir myfolder` ke akhir untuk menghapus folder yang sekarang tidak ada. Ini disimpan karena hanya akan berjalan jika mv kembali sukses DAN karena rmdir tidak akan menghapus direktori yang tidak kosong.