GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menghitung jumlah file yang dapat diteruskan sebagai argumen ke beberapa perintah untuk pemrosesan batch?

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:

  1. jumlah panjang string argumen baris perintah dan variabel lingkungan termasuk byte NUL penghentiannya.

  2. 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.


Linux
  1. Bagaimana cara menggunakan baris file sebagai argumen perintah?

  2. Bagaimana saya bisa meneruskan semua argumen dengan xargs di tengah perintah di linux

  3. Bagaimana saya bisa memindahkan file dengan xargs di Linux?

  1. Bagaimana Menjalankan Perintah Sebagai Administrator Sistem (root)?

  2. Bagaimana saya bisa menguji RAM untuk kerusakan data pada sistem berbasis ARM?

  3. Bagaimana saya bisa membuka file dengan nomor baris yang ditampilkan dari baris perintah di 'vi'?

  1. Cara Menggunakan Perintah find Linux untuk Menemukan File

  2. Shell - Bagaimana menemukan direktori dari beberapa perintah?

  3. Bagaimana saya bisa menjalankan perintah yang berbeda tetapi dengan argumen yang sama?