Wyszukiwanie w witrynie

12 praktycznych przykładów polecenia Linux Xargs dla początkujących


Xargs to świetne polecenie, które odczytuje strumienie danych ze standardowego wejścia, a następnie generuje i wykonuje wiersze poleceń; co oznacza, że może pobrać dane wyjściowe polecenia i przekazać je jako argument innego polecenia. Jeśli nie podano żadnego polecenia, xargs domyślnie wykonuje echo. Wielu z Was instruuje go również, aby czytał dane z pliku zamiast ze standardowego wejścia.

Istnieje kilka sposobów, dzięki którym xargs jest przydatny w codziennym użyciu wiersza poleceń. W tym artykule wyjaśnimy 12 praktycznych przykładów poleceń xargs w systemie Linux dla początkujących.

1. Pierwszy przykład pokazuje, jak znaleźć wszystkie obrazy .png i zarchiwizować je za pomocą narzędzia tar w następujący sposób.

Tutaj polecenie akcji -print0 umożliwia wypisanie na standardowe wyjście pełnej ścieżki pliku, po której następuje znak null, a flaga xargs -0 skutecznie radzi sobie ze spacją w nazwach plików.

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

2. Możesz także przekonwertować wieloliniowe wyjście polecenia ls na pojedynczą linię, używając xargs w następujący sposób.

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

3. Aby wygenerować zwartą listę wszystkich kont użytkowników Linuksa w systemie, użyj następującego polecenia.

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

4. Zakładając, że masz listę plików i chcesz poznać liczbę linii/słów/znaków w każdym pliku na liście, możesz użyć polecenia ls i xargs w tym celu w następujący sposób.

ls *upload* | xargs wc

5. Xarags pozwala także znaleźć i rekursywnie usunąć katalog, na przykład poniższe polecenie usunie rekurencyjnie DomTerm z katalogu Pobrane.

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

6. Podobnie jak poprzednie polecenie, możesz także znaleźć wszystkie pliki o nazwach net_stats w bieżącym katalogu i je usunąć.

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

7. Następnie użyj xargs, aby skopiować plik do wielu katalogów jednocześnie; w tym przykładzie próbujemy skopiować plik.

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

8. Możesz także użyć polecenia find, xargs i poleceń rename razem na, aby zmienić nazwy wszystkich plików lub podkatalogów w określonym katalogu na małe litery w następujący sposób.

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

9. Oto kolejny przydatny przykład użycia xargs, który pokazuje, jak usunąć wszystkie pliki w katalogu z wyjątkiem jednego lub kilku plików z danym rozszerzeniem.

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

10. Jak wspomniano wcześniej, możesz poinstruować xargs, aby czytał elementy z pliku zamiast standardowego wejścia, używając flagi -a, jak pokazano.

xargs -a rss_links.txt

11. Możesz włączyć szczegółowość za pomocą flagi -t, która mówi xargs, aby wypisał wiersz poleceń na standardowym wyjściu błędu przed jego wykonaniem.

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

12. Domyślnie xargs kończy/rozdziela elementy spacjami. Możesz użyć flagi -d, aby ustawić ogranicznik, którym może być pojedynczy znak, znak ucieczki w stylu C, taki jak \n, lub kod ucieczki w formacie ósemkowym lub szesnastkowym.

Ponadto możesz także zapytać użytkownika o to, czy uruchomić każdą linię poleceń i przeczytać linię z terminala, używając flagi -p, jak pokazano (wystarczy wpisać y dla tak lub n zamiast nie).

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

Aby uzyskać więcej informacji, przeczytaj stronę podręcznika xargs.

man xargs 

To wszystko na teraz! Xargs to potężne narzędzie do tworzenia wiersza poleceń; może pomóc w przekazaniu wyniku jednego polecenia jako argumentu innego polecenia do przetworzenia. W tym artykule wyjaśniliśmy 12 praktycznych przykładów poleceń xargs dla początkujących. Podziel się z nami swoimi przemyśleniami lub pytaniami, korzystając z poniższego formularza opinii.