Biarkan xargs melakukan perhitungan untuk Anda.
printf '%s\0' files/* | xargs -0 mv -t new_files_dir
Pertanyaan Anda tampaknya mengasumsikan bahwa ada "batas jumlah argumen" yang sebenarnya, padahal itu adalah kombinasi dari dua batas:
-
jumlah panjang string argumen baris perintah dan variabel lingkungan termasuk byte NUL penghentiannya.
-
panjang string maksimum dari satu argumen baris perintah.
Misalnya, Anda mungkin dapat memanggil perintah dengan 200000 argumen satu huruf, dengan 100000 argumen dua huruf, tetapi tidak dengan satu argumen lebih dari 128k byte.
Dengan asumsi xargs
dari GNU coreutils, xargs --show-limits </dev/null
akan menunjukkan batas-batas tersebut pada sistem Anda.
Di sistem apa pun, xargs
akan tidak gunakan batas maksimum sistem Anda saat membuat baris perintah, tetapi akan memilih sesuatu yang masuk akal (sama sekali tidak masuk akal untuk membebani sistem dengan cara itu).
Jika benar-benar penting, Anda dapat menulis batch-move
Anda sendiri program dalam C, yang mengambil mis. daftar file sebagai input standar dan melakukan pemindahan menggunakan panggilan sistem Unix yang relevan.
Jika tidak, "cari tahu batasannya dan kerjakan sampai batas itu" adalah tepatnya apa xargs(1)
(Versi GNU di Linux, di sini) bisa. Saya sangat meragukan bahwa Anda akan menjadi lebih cepat.