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.