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/myfolder
maka 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
mv
semua 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 argument
danmv: rename fake/.. to ./..: Invalid argument
Ini dimungkinkan dengan metode berikut:
Menggunakan rsync
:
rsync -vua --delete-after foo/ .
Menggunakan cp
dan rmdir
:
cp -vaR foo/. . && rmdir foo/
Menggunakan mv
(dengan dotglob
opsi 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 shopt
dan 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
, -a
dan -r
lakukan? AFAICT, -v
adalah verbose, yang hanya membuat rsync mencetak informasi lebih lanjut. -u
berarti pembaruan - hanya menyalin file jika itu lebih baru. Itu sepertinya tidak relevan. -a
berarti arsip. Itu akan menyalin pemilik dan izin file, dan membuat sinkronisasi rekursif. -r
berarti rekursif, tapi itu sudah dicakup oleh -a
.
-u
berguna 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 -a
seperti 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_store
di macOS. The mv
perintah di atas tidak akan memindahkan (tanpa dotglob
set).
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.