이 동작을 만들려고합니다.
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로 발견 된 각 이름을 묘사합니다 옵션.