Saya memiliki direktori yang dibongkar, tetapi ada di folder. Bagaimana saya bisa memindahkan konten naik satu tingkat? Saya mengakses CentOS melalui SSH.
127
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.
.*
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..*
. Menghapus folder asli itu sepele dan tidak diminta, jadi kami akan membiarkan OP berurusan dengan itu sendiri.*
dan.*
dalam satu baris? hanya ingin tahumv
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:
Itu akan memindahkan konten subfolder ke folder Anda saat ini. Perhatikan spasi sebelum "." Yang terakhir.
sumber
mv: rename fake/. to ./.: Invalid argument
danmv: rename fake/.. to ./..: Invalid argument
Ini dimungkinkan dengan metode berikut:
Menggunakan
rsync
:Menggunakan
cp
danrmdir
:Menggunakan
mv
(dengandotglob
opsi diaktifkan):di mana
foo/
folder Anda yang isinya dipindahkan satu tingkat ke atas.Lihat:
help shopt
danman bash
.Menggunakan
mv
(seperti yang disarankan di sini ):Catatan: Ini akan melewatkan file yang disebut
foo/..bar..
.Catatan: Untuk kerang POSIX, Anda perlu
[!.]
.sumber
-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 dipanggilfoo/..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
jika Anda ingin menghapus direktori maka tambahkan
Diasumsikan bahwa Anda berada di direktori induk dari (direktori)
Jika Anda berada di dalam (direktori) itu
sumber
rmdir
mengeluh dan keluar jika direktori tidak kosong, sementararm -r
sebaliknya hanya akan menghapusnya dan semua isinya. (Ini adalah poka-kuk .).DS_store
di macOS. Themv
perintah di atas tidak akan memindahkan (tanpadotglob
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/
sumber