GNU/Linux >> Linux Esercitazione >  >> Linux

Come calcolare il numero di file che possono essere passati come argomenti a qualche comando per l'elaborazione batch?

Lascia che xargs esegua i calcoli per te.

printf '%s\0' files/* | xargs -0 mv -t new_files_dir

La tua domanda sembra presupporre che esista un effettivo "limite del numero di argomenti", mentre in realtà è una combinazione di due limiti:

  1. la somma delle lunghezze delle stringhe degli argomenti della riga di comando e variabili d'ambiente inclusi i loro byte NUL di terminazione.

  2. la lunghezza massima della stringa di un singolo argomento della riga di comando.

Ad esempio, potresti essere in grado di chiamare un comando con 200000 argomenti di una sola lettera, con 100000 argomenti di due lettere, ma non con un singolo argomento di più di 128k byte.

Assumendo il xargs da GNU coreutils, xargs --show-limits </dev/null mostrerà quali sono questi limiti sul tuo sistema.

Su qualsiasi sistema, xargs non usa i limiti massimi del tuo sistema quando costruisci le righe di comando, ma sceglierai qualcosa di ragionevole (non avrebbe alcun senso mettere a dura prova il sistema in quel modo).


Se è davvero importante, potresti scrivere il tuo batch-move programma in C, che richiede ad es. l'elenco dei file come input standard ed esegue lo spostamento utilizzando le relative chiamate di sistema Unix.

In caso contrario, esattamente è "trova i limiti e lavora fino a quello". cosa xargs(1) (la versione GNU su Linux, qui) lo fa. Dubito fortemente che diventerai molto più veloce.


Linux
  1. Come eseguire un comando come amministratore di sistema (root)?

  2. Come utilizzare il comando trova di Linux per trovare i file

  3. Shell - Come trovare la directory di alcuni comandi?

  4. Come posso eseguire un comando diverso ma con gli stessi argomenti?

  5. Come posso testare la RAM per la corruzione dei dati su un sistema basato su ARM?

Come cercare file dalla riga di comando di Linux

Come trovare file con il comando fd in Linux

Come utilizzare il comando fd sul sistema Linux

Come contare il numero di file in una directory in Linux

Come usare il comando xargs in Linux?

Come utilizzare il comando which in Linux