xargs를 첫 번째 인수로 전달하도록 설정

xargs를 첫 번째 인수로 전달하도록 설정

나는 이 동작을 생성하려고 합니다.

grep 192.168.1 *.txt

Xargs를 통해 문자열을 grep에 전달하지만 첫 번째 인수가 아닌 마지막에 전달합니다.

echo 192.168.1 | xargs grep  *.txt

들어오는 문자열을 끝이 아닌 "grep"과 "*" 사이에 넣으려면 xargs(또는 유사한 것)에게 지시해야 합니다.

어떻게 해야 하나요?

답변1

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

예시 파일:

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

예제를 실행하세요:

# example uses {} but you can use whatever, such as -I{} or -Ifoo
$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.

답변2

또 다른 방법:

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

파일 이름이 너무 많아도 쉘의 명령줄 길이가 오버플로되지 않습니다. 공백 xargsgrep있는 파일 이름과의 혼동을 피하기 위해 -print0옵션은 -0발견된 각 이름을 설명하기 위해 LF 대신 null을 사용합니다.

관련 정보