검색 결과를 얻기 위해 grep으로 파이프된 디렉토리가 없는 이유는 무엇입니까?

검색 결과를 얻기 위해 grep으로 파이프된 디렉토리가 없는 이유는 무엇입니까?

내 현재 디렉토리:

pwd
/home/debian

-dig에서 문자열을 검색합니다 /home/debian/mydoc/source.

grep -lr -e "-dig" /home/debian/mydoc/source  
#get nothing as output

다음 grep에 아무것도 파이핑해도 결과가 나오지 않는 것 같습니다.

grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"
#my desired output:nothing ,none directory send to xargs

확인하다:

grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"
/home/debian/.cache/google-chrome/Default/Cache/b2b96208dbb4fdff_0
/home/debian/.cache/google-chrome/Default/Cache/33f7b9aaf4e3cb37_0
/home/debian/.cache/google-chrome/Default/Cache/b7b3cae8052a94ea_0

실제 검색 결과는 제가 상상한 것과 다릅니다 grep -lr -e "dns" /home/debian.

grep -lr -e "dns" /home/debian
/home/debian/.cache/google-chrome/Default/Cache/b2b96208dbb4fdff_0
/home/debian/.cache/google-chrome/Default/Cache/33f7b9aaf4e3cb37_0
/home/debian/.cache/google-chrome/Default/Cache/b7b3cae8052a94ea_0

bash 명령의 근거를 알려주십시오.- grep -lr -e "-dig" /home/debian/mydoc/source | xargs -d '\n' grep -lr -e "dns"?

답변1

첫 번째 표현은 확실히 아무것도 반환하지 않으므로 두 번째 grep은 xargs에서 빈 args 목록을 가져옵니다.

두 번째 grep에는 -r(재귀)이 포함됩니다.

man grep 페이지에서:

-r, --recursive :: 파일 피연산자가 제공되지 않으면 grep은 작업 디렉토리를 검색합니다.

따라서 xargs가 실행하는 grep은 /home/debian으로 복원됩니다.

관련 정보