xargs를 첫 번째 매개 변수로 전달합니다 192.168.1 |

이 동작을 만들려고합니다.

grep 192.168.1 *.txt

Xargs를 통해 grep에 문자열을 전달하면 첫 번째 매개 변수 대신 끝납니다.

echo 192.168.1 | xargs grep  *.txt

들어오는 문자열을 ‘grep’과 ‘*’사이에 두지 말고 xargs (또는 이와 유사한 것)에 지시해야합니다.

어떻게해야합니까?



답변

$ echo 192.168.1. | xargs -I{} grep {} *.txt

샘플 파일 :

$ cat {1..3}.txt
192.168.1
192.168.1
192.168.1

예제 실행 :

$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.


답변

다른 접근법 :

find . -name \*.txt -print0 | xargs -0 grep 192.168.1

이렇게하면 파일 이름이 너무 많은 쉘의 명령 행 길이가 오버 플로우되지 않습니다. 혼란을 피하기 위해 xargs/ grep파일 공간을 이름으로 -print0하고 -0널이 아닌 LF로 발견 된 각 이름을 묘사합니다 옵션.


답변