Come usare i comandi Bash Xargs

Come usare i comandi Bash Xargs

“Xargs è un comando bash che consente l'esecuzione di più comandi nella stessa riga. Se i comandi prendono parametri o argomenti come input, possono essere eseguiti nella stessa riga se combinati con Xargs. Con Xargs, è possibile creare ed eseguire più comandi tramite l'input standard, poiché Xargs può prendere un input e convertirlo in un argomento di comando da utilizzare dal comando successivo."

Per aiutarti a capire Xargs e come puoi usarlo, questo articolo fornirà più esempi di utilizzo del comando Xargs. Guarda!

Come usare il comando Xargs

Il modo in cui usi il comando Xargs dipende da ciò che vuoi ottenere. Se usi Xargs senza input, fa eco a tutto ciò che digiti sul terminale una volta premuto Ctrl + d

Gestione di file e directory utilizzando Xargs

Se vuoi trovare tutti i file con una determinata estensione, puoi usare Xargs. Facciamo un esempio di utilizzo di LS con Xargs per file di testo.

$ Trova . -nome '*.txt '-type f | Xargs LS

Nel comando sopra, stiamo usando il Trovare comanda di cercare file nella directory corrente con un .estensione txt.

Ecco l'output

Se si desidera eliminare tutti i file che abbiamo trovato usando il comando sopra, è possibile utilizzare il comando qui sotto.

$ Trova . -nome '*.txt '-type f | Xargs Rm -f

IL -T La bandiera è per verbosio.

Supponiamo di voler creare più directory in cui stai aggiungendo l'input dall'input standard. Potremmo combinarci mkdir con eco, Come nell'esempio seguente.

$ echo 'linux1 tech2 dir3 dir2' | Xargs Mkdir

Se si desidera rimuovere tutte le directory nella directory corrente, è possibile utilizzare Xargs, come mostrato di seguito.

$ Trova . -Tipo D | Xargs Rm -r

Xargs Lettura dell'input da un file

Usando il -UN Flag, puoi istruire Xargs a leggere gli elementi da un file, come nel caso seguente.

Con lo stesso esempio, possiamo dimostrare come combinare più comandi usando Xargs. Per questo, usa il -IO bandiera.

Ad esempio, potremmo utilizzare il comando di seguito per leggere il contenuto di un file e creare una directory utilizzando ogni stringa nel file.

$ CAT 1.txt | xargs -i % mkdir %

È possibile portare ulteriormente il comando per riecheggiare il contenuto del file durante la creazione della directory aggiungendo il comando eco, come mostrato di seguito.

$ CAT 1.txt | Xargs -i % sh -c 'echo %; mkdir %'

Usando xargs con grep

Il comando GREP viene utilizzato per i modelli di corrispondenza e quando si desidera cercare una determinata stringa in vari file, è possibile utilizzare Xargs per combinare Trovare con grep, dove l'output di Trovare verrà convertito in input da utilizzare da grep.

Ecco un esempio in cui troviamo tutti i file di testo contenenti la stringa “Linuxhint."

$ Trova . -nome '*.txt '| Xargs grep 'Linuxhint'

Output limitante per riga

Supponiamo di voler leggere il contenuto di un file. È possibile limitare il numero di output per ogni riga usando -N opzione.

Abbiamo un esempio di numeri di stampa in un determinato intervallo usando il seq comanda e limita l'output per riga a 4

$ seq 1 30 | XARGS -N 4

Specificando il delimitatore

Per impostazione predefinita, Xargs assume uno spazio vuoto come delimitatore. Tuttavia, se è necessario utilizzare un altro delimitatore, è necessario utilizzare il -D comando seguito dal delimitatore.

Ecco un esempio che utilizza un colon come delimitatore quando si lavora con un file per leggere il suo contenuto e creare directory usando le stringhe nel file.

Ecco il contenuto del nostro file.

Ora, eseguiamo il comando qui sotto.

$ nomi di gatti.txt | Xargs -d: | Xargs -t Mkdir

L'output sarebbe:

Il delimitatore nullo

Se provassimo a utilizzare Xargs con file con spazio vuoto nei nomi, porterebbe risultati errati poiché Xargs usa spazio vuoto come delimitatore. In tal caso, dobbiamo usare il -0 Flag, che segnala a Xargs di utilizzare Null Delimiter. Inoltre, abbiamo bisogno -Stampa0 Flag, che viene utilizzato da Find per indicare un elenco separato null.

Ad esempio, supponiamo che abbiamo avuto i file di immagine di seguito.

Se abbiamo provato a eliminare tutti i file utilizzando il comando di seguito, Xargs stamperebbe i file di immagine solo senza spazio nel loro nome, come mostrato di seguito.

$ Trova . -nome '*.png '-type f | Xargs Rm -f

Per superare questo, dobbiamo usare il flag -0 e -print0.

$ Trova . -nome '*.png '-type f -print0 | XARGS -0 RM -F

Possiamo verificare che abbiamo eliminato correttamente tutti i file.

Conclusione

Questa guida ha coperto il comando Bash Xargs in profondità, dando esempi su come usarlo per ottenere vari aspetti. Facendo riferimento agli esempi presentati, è possibile implementare Xargs alla fine per eseguire varie attività. Inoltre, controlla la pagina Man per Xargs per ottenere più dettagli sull'utilizzo.