Dalam lingkungan GUI, drag-and-drop dengan replace akan mengganti file dan seluruh direktori (termasuk konten) dengan apa pun yang sedang disalin. Apakah ada cara untuk mencapai hasil intuitif yang sama dengan perintah 'mv'?
sumber
Dalam lingkungan GUI, drag-and-drop dengan replace akan mengganti file dan seluruh direktori (termasuk konten) dengan apa pun yang sedang disalin. Apakah ada cara untuk mencapai hasil intuitif yang sama dengan perintah 'mv'?
Tidak dengan mv
.
Fungsi inti dari mv
(meskipun namanya) adalah untuk mengubah nama objek. Salah satu jaminan yang dibuat oleh UNIX adalah bahwa penggantian nama bersifat atomik - Anda tidak pernah diizinkan melihat penggantian nama yang diselesaikan sebagian. Jaminan ini bisa sangat berguna jika Anda ingin mengubah file ( /etc/passwd
, misalnya) yang mungkin dilihat oleh program lain, dan Anda ingin mereka melihat versi file lama atau baru, dan tidak ada kemungkinan lain . Tetapi "penggantian nama rekursif" seperti yang Anda gambarkan akan mematahkan jaminan itu - Anda bisa menghentikannya di tengah dan Anda akan memiliki pohon setengah bergerak dan mungkin berantakan - sehingga tidak benar-benar cocok dengan filosofi dari mv
. Itu dugaan saya mengapa mv -r
tidak ada.
(Jangan pedulikan mv
filosofi itu dengan cara lain yang lebih kecil. Misalnya, mv
sebenarnya cp
diikuti oleh rm
ketika memindahkan file dari satu sistem file ke yang lain.)
Filosofi yang cukup. Jika Anda ingin memindahkan pohon ("drag-drop") secara rekursif dari satu tempat ke tempat lain di sistem file yang sama , Anda bisa mendapatkan efisiensi dan kecepatan mv
sebagai berikut (misalnya):
cp -al source/* dest/ && rm -r source/*
Tanda -l
untuk cp
berarti "membuat tautan keras alih-alih menyalin" - secara efektif membuat nama file baru yang menunjuk ke data file yang sama dengan nama file lama. Ini hanya bekerja pada sistem berkas yang mendukung tautan keras, jadi - sehingga sistem berkas asli UNIX-ish baik-baik saja, tetapi tidak akan bekerja dengan FAT.
The &&
berarti "hanya menjalankan perintah berikut jika perintah sebelumnya berhasil". Jika suka, Anda dapat menjalankan dua perintah satu per satu sebagai gantinya.
Saya tidak berpikir Anda bisa meniru perilaku drag-drop yang Anda gambarkan
mv
, karena subdirektori tidak kosong di target tidak akan diganti.Mungkin
rsync
? Sesuatu sepertirsync -a -r source/ target/
? Jalankan dengan-v -n
melakukan dry-menjalankan verbose terlebih dahulu untuk memastikan itu melakukan apa yang Anda inginkan.sumber
mv -f /path/to/source/folder/* /destination/folder/
Akan memindahkan semua yang ada di / path / ke / source / folder, termasuk file dan direktori ke / tujuan / folder.
Dan akan menimpa file dan direktori yang ada.
sumber
Anda mungkin ingin mengubah jawaban yang benar untuk ini:
https://github.com/iaindooley/pickdrop
Contoh:
katakan saya punya:
dan saya ingin memindahkan hal-hal ini ke / situs
jadi sepertinya:
Saya bisa pergi:
Ini benar-benar dipotong & tempel.
sumber