GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare il comando xargs di Linux

Introduzione

Alcuni comandi Linux accettano input sia dall'input standard (stdin) sia come argomento della riga di comando. Tuttavia, altri sono progettati per accettare l'input solo come argomento. Per poter elaborare l'input standard, quei comandi Linux devono utilizzare il xargs comando.

In questo tutorial imparerai come usare xargs di Linux comando per manipolare l'input standard e lavorare con altri comandi.

Prerequisiti

  • Un sistema che esegue Linux
  • Accesso alla riga di comando

Cos'è il comando xargs?

Il xargs comando compila ed esegue i comandi forniti tramite lo standard input. Prende l'input e lo converte in un argomento di comando per un altro comando. Questa funzione è particolarmente utile nella gestione dei file, dove xargs viene utilizzato in combinazione con rm , cp , mkdir e altri comandi simili.

Come utilizzare il comando xargs con esempi

Se utilizzato da solo, xargs chiede all'utente di inserire una stringa di testo che poi passa a echo comando.

L'esempio mostra un input di esempio, seguito dall'output di echo comando.

Combina xargs con trova

Il comando trova spesso precede xargs in una conduttura. Usalo per fornire un elenco di file per l'ulteriore elaborazione da parte di xargs . La sintassi è simile a questa:

find [location] -name "[search-term]" -type f | xargs [command]

L'esempio sopra mostra l'utilizzo di find comando per trovare tutti i file con .sh estensione. L'elenco dei file viene quindi reindirizzato a xargs , che utilizza il rm comando per eliminarli.

Tuttavia, xargs non include automaticamente i file che contengono spazi vuoti nei loro nomi. Per includere anche questi file, usa il -print0 opzione per find e il -0 opzione per xargs :

find [location] -name "[search-term]" -type f -print0 | xargs -0 [command]

rm ora elimina tutti i file con il .sh estensione.

Combina xargs con grep

Usa xargs con il comando grep per cercare una stringa nell'elenco dei file forniti da find comando.

find . -name '[search-term]' | xargs grep '[string-to-find-in-files]'

L'esempio sopra ha cercato tutti i file con .txt estensione e li ha inviati a xargs , che ha quindi eseguito il grep comando su di loro.

Comandi multipli Xargs

Per eseguire più di un comando con xargs , usa il -I opzione. La sintassi è:

[command-providing-input] | xargs -I % sh -c '[command-1] %; [command-2] %'

Nell'esempio, il contenuto di file4.txt sono stati visualizzati per primi. Quindi mkdir ha creato una cartella per ogni parola nel file.

Leggi elementi da file

Come accennato in precedenza, xargs legge lo standard input. Usa il -a opzione per leggere invece il contenuto di un file.

xargs -a [filename]

Trova e archivia le immagini usando tar

Se utilizzato con il comando tar, xargs crea un tar.gz archivia e lo popola con i file forniti da find comando.

find [location] -name "[search-term]" -type f -print0 | xargs -0 tar -cvzf [tar-gz-archive-name]

Comando di stampa

Per vedere i comandi eseguiti da xargs nell'output standard, utilizzare il -t opzione.

[command-providing-input] | xargs -t [command]

Nell'esempio sopra, nota che xargs eseguito il comando mkdir sull'intera stringa fornita da echo .

Approva l'esecuzione del comando xargs

Alcuni xargs le operazioni, come la rimozione di file e cartelle, sono irreversibili. Per controllare l'esecuzione di questi comandi, usa il -p opzione.

[command-providing-input] | xargs -p [command]

Quando esegui il comando con -p opzione, xargs visualizza una riga di conferma prima di eseguirlo. Digita y per procedere, o n per annullare l'operazione.

Limite di uscita per riga

A volte è necessario controllare il numero di argomenti xargs prende allo stesso tempo. Esegui questa azione utilizzando il -n opzione seguita dal numero di argomenti che stai limitando xargs a:

[command-providing-input] | xargs -n [number] [command]

Nell'esempio seguente, xargs prende la stringa da echo comando e lo divide in tre. Quindi esegue un altro echo per ciascuna delle parti:

Specifica il delimitatore

Il xargs predefinito il delimitatore è uno spazio vuoto. Per modificare il delimitatore predefinito, utilizza il -d comando seguito da un singolo carattere o un carattere di escape come n (una nuova riga).

[command-providing-input] | xargs -d [new-delimiter] | xargs [command]

Nell'esempio seguente, il xargs comando indica al sistema di utilizzare * come delimitatore e applica mkdir a ciascuno degli argomenti ottenuti.

Elenca tutti gli account utente Linux sul sistema

Usa xargs per organizzare l'output dei comandi, come cut . Considera il seguente esempio:

cut -d: -f1 < /etc/passwd | sort | xargs

Il comando cut accede a /etc/passwd file e utilizza il : delimitatore per tagliare l'inizio di ogni riga nel file. L'output viene quindi reindirizzato a sort , che ordina le stringhe ricevute e, infine, in xargs che li visualizza:

Rimuovi gli spazi vuoti nella stringa

Da xargs ignora gli spazi vuoti durante la ricerca di argomenti, il comando è utile per rimuovere gli spazi vuoti non necessari dalle stringhe.

echo "[string-with-unnecessary-spaces]" | xargs

Elenca il numero di righe/parole/caratteri in ogni file

Usa xargs con il comando wc per visualizzare un elenco di file con il conteggio di righe, parole e caratteri.

ls | xargs wc

L'esempio seguente indicava al comando ls di reindirizzare a xargs solo i file contenenti la parola “esempio”. xargs quindi applicato wc a quell'elenco:

Copia file in più directory

Copia i file in più directory utilizzando xargs comando. La sintassi è semplice:

echo [directory-1] [directory-2] | xargs -n 1 cp -v [filename]

L'echo comando fornisce i nomi delle directory e xargs usa il comando cp per copiare il file dato in ciascuna delle directory.


Linux
  1. Come usare il comando sed di Linux

  2. Come usare il comando Linux grep

  3. Come usare il comando cronologia in Linux

  4. Come usare il comando Su in Linux

  5. Come utilizzare il comando id in Linux

Come utilizzare il comando Linux Top

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come utilizzare il comando RPM in Linux

Come utilizzare il comando which in Linux