Vyhledávání na webu

12 Praktické příklady příkazu Linux Xargs pro začátečníky


Xargs je skvělý příkaz, který čte proudy dat ze standardního vstupu, poté generuje a spouští příkazové řádky; což znamená, že může převzít výstup příkazu a předat jej jako argument jiného příkazu. Pokud není zadán žádný příkaz, xargs ve výchozím nastavení provede echo. Mnozí mu také nařizují, aby četl data ze souboru místo stdin.

Existuje několik způsobů, jak jsou xargs užitečné při každodenním používání příkazového řádku. V tomto článku vysvětlíme 12 praktických příkladů příkazů Linuxu xargs pro začátečníky.

1. První příklad ukazuje, jak zjistit všechny obrázky .png a archivovat je pomocí nástroje tar následovně.

Zde akční příkaz -print0 umožňuje tisk celé cesty k souboru na standardní výstup, následovaný znakem null a -0 příznak xargs efektivně řeší mezeru v názvech souborů.

find Pictures/tecmint/ -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz

2. Víceřádkový výstup z příkazu ls můžete také převést na jeden řádek pomocí xargs následovně.

ls -1 Pictures/tecmint/
ls -1 Pictures/tecmint/ | xargs

3. Chcete-li vygenerovat kompaktní seznam všech uživatelských účtů systému Linux v systému, použijte následující příkaz.

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

4. Za předpokladu, že máte seznam souborů a chcete znát počet řádků/slov/znaků v každém souboru v seznamu, můžete použít příkaz ls a xargs pro tento účel následovně.

ls *upload* | xargs wc

5. Xarags také umožňuje najít a rekurzivně odstranit adresář, například následující příkaz rekurzivně odstraní DomTerm v adresáři Downloads.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"

6. Podobně jako v předchozím příkazu můžete také vyhledat všechny soubory s názvem net_stats v aktuálním adresáři a smazat je.

find . -name "net_stats" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"

7. Dále pomocí xargs zkopírujte soubor do více adresářů najednou; v tomto příkladu se pokoušíme zkopírovat soubor.

echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx 

8. Můžete také použít příkazy find, xargs a přejmenovat příkazy společně na k přejmenování všech souborů nebo podadresářů v konkrétním adresáři na malá písmena následovně.

find Documnets -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

9. Zde je další užitečný příklad použití xargs, který ukazuje, jak odstranit všechny soubory v adresáři kromě jednoho nebo několika souborů s danou příponou.

find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

10. Jak již bylo zmíněno dříve, xargs můžete dát pokyn ke čtení položek ze souboru namísto standardního vstupu pomocí příznaku -a, jak je znázorněno.

xargs -a rss_links.txt

11. Výřečnost můžete povolit pomocí parametru -t, který říká xargs, aby vypsal příkazový řádek na standardní chybový výstup před jeho provedením.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"

12. Ve výchozím nastavení xargs ukončuje/odděluje položky pomocí prázdných mezer. Pomocí příznaku -d můžete nastavit oddělovač, kterým může být jeden znak, znak escape ve stylu C, jako je \n, nebo osmičkový nebo hexadecimální kód escape.

Kromě toho můžete uživatele také vyzvat, zda má spustit každý příkazový řádek a přečíst řádek z terminálu pomocí příznaku -p, jak je znázorněno (stačí zadat y ano nebo n pro ne).

echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx 

Pro více informací si přečtěte manuálovou stránku xargs.

man xargs 

To je prozatím vše! Xargs je výkonný nástroj pro vytváření příkazového řádku; může vám pomoci předat výstup jednoho příkazu jako argument jiného příkazu ke zpracování. V tomto článku jsme vysvětlili 12 praktických příkladů příkazů xargs pro začátečníky. Podělte se s námi o své myšlenky nebo otázky prostřednictvím formuláře pro zpětnou vazbu níže.