Linux Commands · 7 min read · Sep 20, 2025
8 Esempi Pratici del Comando Linux Xargs per Principianti

Il comando Linux xargs potrebbe non essere uno strumento della riga di comando molto popolare, ma ciò non cambia il fatto che sia estremamente utile, specialmente in combinazione con altri comandi come find e grep. Se non conosci ancora xargs e vuoi capire il suo utilizzo, sarai felice di sapere che faremo proprio questo qui.
Prima di procedere, ti preghiamo di tenere a mente che tutti gli esempi presentati in questo tutorial sono stati testati su Ubuntu 22.04 LTS. La shell utilizzata sul mio sistema è Bash.1. Come funziona il comando Xargs?
Bene, prima di saltare al suo utilizzo, è importante capire cosa fa esattamente Xargs. In termini semplici, lo strumento - nella sua forma più basilare - legge i dati dall’input standard (stdin) ed esegue il comando (fornito come argomento) una o più volte in base all’input letto. Qualsiasi spazio vuoto e spazi nell’input vengono trattati come delimitatori, mentre le righe vuote vengono ignorate.
Se non viene fornito alcun comando come argomento a xargs, il comando predefinito che lo strumento esegue è echo. Ad esempio, nel seguente esempio, ho semplicemente eseguito ‘xargs’ e ho inserito ‘Hello World’ su stdin. Quando ho premuto Ctrl+D (per dire a xargs che abbiamo finito con l’input), il comando echo è stato eseguito automaticamente e ‘Hello World’ è stato stampato di nuovo.
2. Come usare xargs con un altro comando?
Mentre echo è il comando predefinito che xargs esegue, puoi specificare esplicitamente qualsiasi altro comando. Ad esempio, puoi passare il comando find insieme alla sua opzione ‘-name’ come argomento a xargs, e poi passare il nome del file (o tipo di file) che vuoi trovare per cercare come input tramite stdin.
Ecco il comando completo in questione:
xargs find -nameAd esempio, abbiamo fornito “.txt” come input tramite stdin, il che significa che vogliamo che il comando find* cerchi tutti i file .txt nella directory corrente (così come nelle sue sottodirectory).
Ecco il comando in azione:
3. Come far eseguire a xargs un comando più volte (una volta per ogni riga/argomento di input)
Nell’esempio discusso nella sezione precedente, volevamo cercare file .txt, quindi abbiamo fornito “*.txt” nell’input. Ma cosa succede se la richiesta è di cercare anche altri tipi di file, come .log e .tmp?
Prova a fornire questi come input a xargs dopo “*.txt” e vedi cosa succede. Bene, dovresti ricevere un errore simile al seguente:
Questo perché xargs passa “.txt” e “.log” come input del nome del file al comando find e poi find fallisce poiché viene eseguito con due nomi di file in input. Puoi pensare al comando find eseguito nel seguente modo:
find -name "*.txt" "*.log"E non è il modo corretto.
Ciò che vogliamo è che il comando xargs passi prima “.txt” al comando find, in modo che find ci dia risultati relativi ai file .txt, e poi venga passato “.log”. Questo può essere fatto utilizzando l’opzione della riga di comando -L che xargs fornisce.
L’opzione della riga di comando -L richiede un numero che tratta come il numero massimo di righe non vuote che dovrebbero essere passate come input al comando in un colpo solo. Quindi, nel nostro caso, quel valore sarà 1, poiché vogliamo che una riga di input venga passata come input a find alla volta.
Quindi, ecco il comando che dovremmo eseguire:
xargs -L 1 find -nameLo screenshot seguente mostra il comando sopra menzionato in azione:

Finora, tutto bene. Ma cosa succede se passi l’input nel seguente modo:
"*.txt" "*.log"Bene, il comando fallirà perché ‘-L 1’ si assicurerà che l’intera riga venga passata al comando find.
In situazioni come queste, puoi utilizzare l’opzione della riga di comando ‘-n’.
L’opzione della riga di comando ‘-n’, come ‘-L’, richiede un numero che rappresenterebbe il numero di argomenti che vuoi che xargs passi per riga di comando. Nel caso che abbiamo appena discusso, “.txt” e “.log” dovrebbero essere argomenti diversi, e poiché vogliamo che vengano passati individualmente, dovremo fornire ‘1’ come valore per ‘-n’.
xargs -n 1 find -name

Quindi questi sono i modi in cui possiamo far eseguire a xargs un comando più volte.
4. Come far gestire a xargs i nomi dei file con spazi
Se ricordi, all’inizio abbiamo menzionato che xargs tratta gli spazi vuoti (così come i caratteri di nuova linea) come delimitatori. Questo può causare problemi nei casi in cui i nomi dei file passati come input a xargs contengono spazi.
Ad esempio, supponiamo che la directory corrente contenga un file chiamato ‘new music.mp3’, e vuoi che xargs passi questo nome a mplayer in modo che quest’ultimo possa riprodurre il file. Se segui il modo convenzionale, riceverai un errore:

Questo perché a causa dello spazio tra ‘new’ e ‘music.mp3’, questi vengono trattati come due file diversi da mplayer. Un modo per risolvere questo problema è utilizzare il backslash mentre fornisci l’input:
new\ music.mp3L’altro modo è cambiare il delimitatore, cosa che puoi fare utilizzando l’opzione -d. Ad esempio, puoi chiedere a xargs di considerare solo la nuova linea come delimitatore, qualcosa che può essere fatto nel seguente modo:
xargs -d '\n' mplayer
5. Come far gestire a xargs i nomi dei file con caratteri di nuova linea
Quindi, ora sappiamo come possiamo far gestire a xargs i nomi dei file che contengono spazi bianchi. Ma cosa dire delle nuove linee? Sì, i nomi dei file possono avere anche caratteri di nuova linea. Ad esempio, c’è un file chiamato ‘foo’[newline]’file.txt’. Sul terminale, il nome viene visualizzato come ‘foo?file.txt’.
Ora, supponiamo di voler utilizzare il comando find per trovare tutti i file con nomi che iniziano con il testo ‘foo’, e poi usare xargs per aprire questi file in gedit. Ecco il comando:
find . -name "foo*" | xargs geditSfortunatamente, il comando non riesce a raggiungere il suo scopo poiché un nuovo file con il nome ‘foo’ si apre in Gedit. Questo è probabilmente perché il carattere di nuova linea viene trattato come un delimitatore da xargs.
Per risolvere questo problema, utilizza l’opzione -print0 che find offre e accoppiala con l’opzione -0 di xargs. Ecco come la pagina man di find spiega questa opzione:
-print0
Vero; stampa il nome completo del file sull'output standard, seguito da un carattere nullo (invece del carattere di nuova linea che -print utilizza). Questo consente ai nomi dei file che contengono nuove linee o altri tipi di spazi bianchi di essere interpretati correttamente dai programmi che elaborano l'output di find. Questa opzione corrisponde all'opzione -0 di xargs.Quindi, ecco il comando che dovremmo utilizzare:
find . -name "foo*" -print0 | xargs -0 gedit6. Come trovare file contenenti un testo specifico
Il comando xargs è molto utile se vuoi cercare file contenenti un testo/stringa specifica. Ad esempio, se vuoi trovare file .txt contenenti il testo ‘abc’, allora questo può essere fatto nel seguente modo:
find -name "*.txt" | xargs grep "abc"Ecco il comando in azione:
Come è abbastanza ovvio, in questo caso, il comando xargs ottiene il suo input dal comando find.
7. Come far accettare a xargs input da un file
Finora, abbiamo visto xargs accettare input da stdin (che è il comportamento predefinito) così come da un altro comando (discusso nella sezione precedente). Tuttavia, se vuoi, puoi anche far accettare a xargs input da un file.
L’opzione -a del comando ti consente di farlo. Questa opzione si aspetta un nome di file - questo sarebbe il file da cui xargs leggerà l’input.
Ad esempio, supponiamo che ci sia un file con nome ‘input.txt’. Contiene l’input per xargs (fondamentalmente, i contenuti sono due nomi di file: testfile1.txt e testfile2.txt). Ecco come xargs può essere utilizzato per leggere input da questo file e passarla a un altro comando, diciamo ls.
xargs -a input.txt ls -lartEcco il comando in azione:
8. Come far chiedere a xargs il permesso dell’utente prima di eseguire un comando
Abbiamo già discusso di come puoi far eseguire a xargs un comando più volte (vedi punto 3 sopra). Ma cosa succede se vuoi che xargs chieda il tuo permesso ogni volta che esegue il comando? È possibile? Sì, lo è - l’opzione della riga di comando -p lo rende possibile.
Ecco un esempio di come puoi eseguire xargs in modalità interattiva:
Abbiamo appena grattato la superficie qui poiché ci sono molte altre funzionalità che il comando xargs fornisce sotto forma di opzioni della riga di comando. Prova i concetti/caratteristiche di xargs che abbiamo spiegato in questo tutorial e in caso di dubbi o domande, consulta la sua pagina man.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.