Myślę, że są to typowe sposoby przekazywania wyniku jednego polecenia do następnego, jako danych wejściowych.
Jak działają te trzy? Lub jakie są niektóre strony / adresy URL?
Pierwsze rzeczy do wpisania:
man find
man xargs
W find
komenda wyniki na standardowe wyjście domyślnie, więc -print
opcja jest zazwyczaj nie są potrzebne, ale -print0
rozdziela nazwy plików z (null) bajt 0 tak, że nazwy zawierające spacje lub znaki nowej linii mogą być interpretowane poprawnie.
-exec
Opcja jest coś, co można używać zamiast xargs - polecenie find wykonuje polecenia dla każdej pozycji znajdzie.
xargs
Komenda czyta czasoprzestrzeni lub nowej linii oddzielone sznurki (zwykle od znajdowania polecenia, ale mogą pochodzić z dowolnego miejsca) i wykonuje jakąś komendę dla każdej struny.
Jeśli xargs jest uruchamiany z opcją -0 , będzie oczekiwać łańcuchów rozdzielonych przez NULL jako danych wyjściowych przezfind ... -print0
Zaletą xargs jest to, że może grupować ciągi razem, dzięki czemu wykonuje polecenie tylko raz lub dwa razy zamiast n razy.
W normalnym użyciu:
find start_directory -name '*.txt' | xargs ls -l
find wyświetli listę nazw plików, a xargs wyda polecenia takie jak:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
co jest szybsze niż wydawanie komendy find:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
Zauważ, że xargs nie jest już potrzebny w obecnych implementacjach find, które prawdopodobnie wszystkie obsługują tę składnię POSIX:
find directory -name '*.txt' -exec ls -l {} +
co jest prostsze i nieco szybsze niż wariant xargs.
find directory -name '*.txt' | xargs ls -l
Zobacz następujące artykuły:
Linux i Unix znajdują samouczek poleceń z przykładami
xargs: Jak kontrolować i używać argumentów wiersza poleceń
źródło