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