Příkaz xargs čte ze standardního vstupu a provádí příkaz pro každý poskytnutý argument. Každý argument musí být oddělen mezerami. Operátor roury se používá k tomu, aby se výstup prvního příkazu stal vstupem pro druhý příkaz. Příkaz xargs se běžně používá s příkazem find pro práci s každým výsledkem, který je nalezen při hledání souboru nebo adresáře.
Syntaxe
Obecná syntaxe příkazu xargs je:
# command [options] [arguments] | xargs [options] {command} Řekněme, že chcete smazat všechny soubory v adresáři /foo, které mají příponu .pdf. K automatizaci procesu můžete použít xargs:
# find /foo -type f -name "*.pdf" | xargs rm
Příkaz find vyhledá všechny soubory v /foo, které mají příponu .pdf, a výsledek pak přenese do příkazu xargs. Protože jsou výsledky odděleny mezerou, příkaz xargs provede příkaz rm pro každý soubor ve výsledcích – odstraní všechny soubory PDF v adresáři.
Příkaz xargs má různé možnosti, jak je uvedeno níže:
| Možnost | Popis |
|---|---|
| -I {náhradní řetězec} | Považujte každý řádek standardního vstupu za jeden argument. |
| -L {počet řádků} | Přečtěte zadaný počet řádků ze standardního vstupu a spojte je do jednoho dlouhého řetězce. |
| -p | Dotázat se uživatele před každým příkazem. |
| -n {počet argumentů} | Přečtěte maximální počet argumentů ze standardního vstupu a vložte je na konec šablony příkazu. |
| -E {konec řetězce} | Představuje konec standardního vstupu. |
| -t | Před provedením příkazu zapište každý příkaz do standardního chybového výstupu. |
| -s {max size} | Nastavte maximální povolenou velikost seznamu argumentů na zadaný počet znaků. |
Pokud při spouštění příkazu xargs narazíte na níže uvedenou chybu:
xargs: command not found
můžete zkusit nainstalovat níže uvedený balíček podle vaší volby distribuce:
| Distribuce OS | Příkaz |
|---|---|
| OS X | brew install findutils |
| Debian | apt-get install findutils |
| Ubuntu | apt-get install findutils |
| Alpine | apk add findutils |
| Arch Linux | pacman -S findutils |
| Kali Linux | apt-get install findutils |
| Fedora | dnf install findutils-1 |
| Raspbian | apt-get install findutils |
Příklady příkazů xargs
1. Spusťte příkaz s použitím vstupních dat jako argumentů:
# arguments_source | xargs command
2. Spusťte několik zřetězených příkazů na vstupních datech:
# arguments_source | xargs sh -c "command1 && command2 | command3"
3. Smažte všechny soubory s příponou `.backup` (`-print0` používá k rozdělení názvů souborů prázdný znak a `-0` jej používá jako oddělovač):
# find . -name '*.backup' -print0 | xargs -0 rm -v
4. Proveďte příkaz jednou pro každý vstupní řádek a nahraďte všechny výskyty zástupného symbolu (zde označeného jako `_`) vstupním řádkem:
# arguments_source | xargs -I _ command _ optional_extra_arguments
5. Paralelní běh až `max-procs` procesů najednou; výchozí hodnota je 1. Pokud je `max-procs` 0, xargs spustí tolik procesů, kolik je jen možné:
# arguments_source | xargs -P max-procs command