Skip to main content

Przykład zastosowania polecenia "xargs"

PuTTY - przykład zastosowania (Czerwiec 2026)

PuTTY - przykład zastosowania (Czerwiec 2026)
Anonim

Polecenie xargs jest zwykle używane w wierszu poleceń, w którym wynik jednego polecenia jest przekazywany jako argumenty wejściowe do innego polecenia.

W wielu przypadkach nie jest wymagane specjalne polecenie, takie jak xargs, ponieważ operatory "pipe" i "redirection" wykonują transakcje tego samego typu. Czasami jednak występują problemy z podstawowym mechanizmem przekierowania i przekierowania, np. Jeśli argumenty zawierają spacje, to xargs pokonuje.

Dodatkowo xargs wykonuje określoną komendę wielokrotnie, jeśli to konieczne, aby przetworzyć wszystkie podane jej argumenty. W rzeczywistości można określić, ile argumentów należy odczytywać ze standardowego strumienia wejściowego za każdym razem, gdy xargs wykona określone polecenie.

Zasadniczo należy użyć polecenia xargs, jeśli wyjście jednego polecenia ma być użyte jako część opcji lub argumentów drugiej komendy, do której przesyłane są dane (za pomocą operatora potoku "|"). Regularne orurowanie jest wystarczające, jeśli dane mają być (standardowym) wejściem drugiego polecenia.

Na przykład, jeśli użyjesz polecenia ls do wygenerowania listy nazw plików i katalogów, a następnie przekierujesz tę listę do komendy xargs wykonującej echo, możesz określić, ile nazw plików lub nazw katalogów jest przetwarzanych przez echo w każdej iteracji w następujący sposób :

ls | xargs -n 5 echo

W tym przypadku echo otrzymuje pięć nazw plików lub katalogów naraz. Ponieważ echo dodaje na końcu znak nowej linii, w każdym wierszu zapisanych jest pięć nazw.

Jeśli wykonasz polecenie, które zwraca duże i nieprzewidywalne elementy liczbowe (np. Nazwy plików), które są przekazywane do innego polecenia do dalszego przetwarzania, dobrym pomysłem jest kontrolowanie maksymalnej liczby argumentów, które otrzymuje drugie polecenie, aby uniknąć przeciążenia i awarii.

W poniższym wierszu polecenia podzielone są strumienie nazw plików utworzone przez znalezienie grup 200 przed przekazaniem do polecenia cp, które kopiuje je do utworzyć kopię zapasową informator.

znajdź ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Element "./" w poleceniu find określa bieżący katalog do wyszukiwania. Argument "-type f" ogranicza wyszukiwanie do plików, a flaga "-name" * .txt dalej odfiltrowuje wszystko, co nie ma rozszerzenia ".txt". -ja flaga w xargs sygnalizuje, że {} notacja reprezentuje każdą nazwę pliku pary.

Poniższa komenda znajduje pliki o nazwie core w katalogu lub katalogu / tmp i usuwa je.

find / tmp -name core -type f -print | xargs / bin / rm -f

Zauważ, że zadziała to niepoprawnie, jeśli istnieją nazwy plików zawierające znaki nowej linii, pojedyncze lub podwójne cudzysłowy lub spacje. Następująca wersja przetwarza nazwy plików w taki sposób, że nazwy plików lub katalogów zawierające pojedyncze lub podwójne cudzysłowy, spacje lub znaki nowej linii są poprawnie obsługiwane.

find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Zamiast tego -ja opcję możesz również użyć -JA flaga, która określa ciąg zastępowany przez linię wejściową w argumentach polecenia, jak w tym przykładzie:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

Łańcuch zastępczy jest zdefiniowany jako "{}". Oznacza to, że wszelkie wystąpienia "{}" w argumentach polecenia są zastępowane przez element wejściowy przekazywany do argumentów poprzez operację potoku. Umożliwia to umieszczenie elementów wejściowych w określonych pozycjach w argumentach polecenia, które mają być wykonywane (wielokrotnie).