CentOS 5.x
Saya minta maaf jika ini pertanyaan berulang. Saya telah melihat banyak pertanyaan serupa (mengenai menghapus file) tetapi tidak persis skenario yang sama.
Saya memiliki direktori yang berisi ratusan ribu file (mungkin lebih dari satu juta) dan sebagai perbaikan jangka pendek untuk masalah yang berbeda, saya perlu memindahkan file-file ini ke lokasi lain.
Untuk keperluan diskusi, katakanlah file-file ini awalnya berada /home/foo/bulk/
dan saya ingin memindahkannya/home/foo2/bulk2/
Jika saya mencoba, mv /home/foo/bulk/* /home/foo2/bulk2/
saya mendapatkan kesalahan "terlalu banyak argumen".
Tn. Google memberi tahu saya bahwa alternatif untuk menghapus file secara massal adalah menjalankan find. Sesuatu seperti: find . -name "*.pdf" -maxdepth 1 -print0 | xargs -0 rm
Itu akan baik-baik saja jika saya menghapus hal-hal tetapi dalam kasus ini saya ingin memindahkan file ... Jika saya mengetik sesuatu seperti find . -name "*" -maxdepth 1 -print0 | xargs -0 mv /home/foo2/bulk2/
bash mengeluh tentang file yang tidak menjadi direktori.
Apa perintah terbaik untuk digunakan di sini untuk memindahkan file secara massal dari satu direktori ke direktori lainnya?
Pertimbangkan
mv
direktori induk alih-alih file:(Tapi itu bisa menimbulkan masalah jika
/home/foo/bulk
harus ada setiap saat.)sumber
mkdir
? Dan bagaimana dengan dir 'yang ada di setiap saat' atau tidak? Mengapa ini mempercepat?mkdir
karena seluruh folder dan semua yang ada di dalamnya akan dipindahkan ke direktori lain dan tidak ada lagi di direktori lama. Ini memastikan bahwa direktori lama masih ada. Namun, ini tidak akan cukup jika ada layanan yang terus berjalan yang bergantung pada direktori pertama yang selalu ada, karena dipindahkan dan kemudian dibuat kembali. Itu tidak membuat apa pun lebih cepat, hanya lebih sederhana dengan memberikan sedikit argumen.Hanya untuk variasi, saya suka menggunakan cpio untuk beberapa kasus seperti ini.
sumber
-print0
dan-0
opsi.Dengan GNU
mv
:Pada sistem seperti OS X yang tidak memiliki
mv -t
tetapi memiliki-print0
danxargs -0
:Atau jika nama file tidak mengandung spasi, tanda kutip, garis miring terbalik, atau baris baru (dengan OS X
xargs
) atau tanda kutip, garis miring terbalik, atau baris baru (dengan GNUxargs
):sumber
Untuk waktu tertentu, coba yang berikut ini:
sumber