Jak używać poleceń Bash Xargs

Jak używać poleceń Bash Xargs

„Xargs to polecenie bash, które umożliwia wykonywanie wielu poleceń w tym samym wierszu. Niezależnie od tego, czy polecenia przyjmują parametry lub argumenty jako dane wejściowe, mogą działać w tym samym wierszu w połączeniu z XARGS. Dzięki xargs możesz budować i wykonywać wiele poleceń za pomocą standardowego wejścia, ponieważ Xargs może przyjmować wejście i przekonwertować do argumentu polecenia, który będzie używany przez następne polecenie."

Aby pomóc Ci zrozumieć Xargs i sposób, w jaki możesz z niego korzystać, ten artykuł poda wiele przykładów korzystania z polecenia XARGS. Spójrz!

Jak używać polecenia Xargs

To, jak używasz polecenia Xargs, zależy od tego, co chcesz osiągnąć. Jeśli używasz XARGS bez danych wejściowych, odzwierciedla wszystko, co wpiszesz na terminalu po naciśnięciu Ctrl + d

Obsługa plików i katalogów za pomocą XARGS

Jeśli chcesz znaleźć wszystkie pliki z danym rozszerzeniem, możesz użyć XARGS. Zróbmy przykład używania LS z XARGS dla plików tekstowych.

$ znajdź . -nazwa '*.txt '-Type f | Xargs LS

W powyższym poleceniu używamy znajdować polecenie wyszukiwania plików w bieżącym katalogu, które mają .rozszerzenie TXT.

Oto wyjście

Jeśli chcesz usunąć wszystkie pliki, które znaleźliśmy za pomocą powyższego polecenia, możesz użyć poniższego polecenia.

$ znajdź . -nazwa '*.txt '-Type f | Xargs Rm -f

-T Flaga jest dla pełnego.

Załóżmy, że chcesz utworzyć wiele katalogów, w których dodajesz dane wejściowe ze standardowego wejścia. Moglibyśmy się połączyć Mkdir z Echo, jak w poniższym przykładzie.

$ echo 'Linux1 Tech2 Dir3 Dir2' | Xargs mkdir

Jeśli chcesz usunąć wszystkie katalogi w bieżącym katalogu, możesz użyć XARGS, jak pokazano poniżej.

$ znajdź . -Typ d | Xargs Rm -r

XARGS Odczytowanie wejściowych z pliku

Używając -A flaga, możesz poinstruować XARG, aby odczytał elementy z pliku, jak w poniższym przypadku.

Z tym samym przykładem możemy wykazać, jak połączyć wiele poleceń za pomocą XARGS. W tym celu użyj -I flaga.

Na przykład moglibyśmy użyć poniższego polecenia, aby odczytać zawartość pliku i utworzyć katalog za pomocą każdego ciągu w pliku.

$ cat 1.txt | xargs -i % mkdir %

Możesz podjąć polecenie dalej, aby odzwierciedlić zawartość pliku podczas tworzenia katalogu, dodając Polecenie echo, jak pokazano niżej.

$ cat 1.txt | xargs -i % sh -c 'echo %; mkdir %'

Za pomocą Xargs z GREP

Polecenie GREP służy do dopasowywania wzorów, a kiedy chcesz wyszukać dany ciąg w różnych plikach, możesz użyć XARGS do połączenia znajdować z Grep, gdzie wyjście znajdować zostanie przekonwertowany na dane wejściowe do użycia przez Grep.

Oto przykład, w którym znajdujemy wszystkie pliki tekstowe zawierające ciąg „Linuxhint."

$ znajdź . -nazwa '*.txt '| Xargs Grep „Linuxhint”

Ograniczanie wyjściowej na linię

Załóżmy, że chcesz odczytać zawartość pliku. Możesz ograniczyć liczbę wyjść dla każdej linii za pomocą -N opcja.

Miejmy przykład drukowania liczb w danym zakresie za pomocą SEQ polecenie i ogranicz wyjście na wiersz do 4

$ seq 1 30 | Xargs -n 4

Określanie ograniczenia

Domyślnie Xargs przyjmuje pustą przestrzeń jako ogranicznik. Jeśli jednak musisz użyć innego ogranicznika, musisz użyć -D polecenie, po których następuje ograniczenie.

Oto przykład, który wykorzystuje dwukropek jako ogranicznik podczas pracy z plik do odczytu jego zawartości i tworzenia katalogów za pomocą ciągów w pliku.

Oto zawartość naszego pliku.

Teraz uruchommy polecenie poniżej.

$ CAT Names.txt | Xargs -D: | Xargs -t mkdir

Wyjście byłoby:

Null Delimiter

Gdybyśmy próbowali użyć XARG z plikami o pustej przestrzeni w nazwach, przyniosłoby to nieprawidłowe wyniki, ponieważ Xargs używa pustej przestrzeni jako ogranicznika. W takim przypadku musimy użyć -0 flaga, która sygnalizuje Xargs do użycia Null Delimiter. Potrzebujemy też -print0 flaga, która jest używana przez znalezienie do wskazania listy oddzielonej zerową.

Załóżmy na przykład, że mieliśmy poniżej pliki obrazu.

Gdybyśmy próbowali usunąć wszystkie pliki za pomocą poniższego polecenia, Xargs wydrukowałby tylko pliki obrazu bez miejsca w ich nazwie, jak pokazano poniżej.

$ znajdź . -nazwa '*.png '-Type f | Xargs Rm -f

Aby to pokonać, musimy użyć flagi -0 i -print0.

$ znajdź . -nazwa '*.png '-Type f -print0 | xargs -0 rm -f

Możemy sprawdzić, czy pomyślnie usunęliśmy wszystkie pliki.

Wniosek

Ten przewodnik obejmował polecenie Bash Xargs dogłębnie, podając przykłady tego, jak go używać do osiągnięcia różnych aspektów. Odwołując się do prezentowanych przykładów, możesz zaimplementować Xargs na końcu, aby wykonać różne zadania. Sprawdź także stronę mężczyzny dla XARGS, aby uzyskać więcej szczegółów użytkowania.