2016-06-27 4 views
0

여러 파일을 grepping하고 있다고 가정 할 때, grep이 현재 검색하고있는 파일을 표시하는 방법이 있습니까?어떤 파일이 grep 검색입니까?

예 :

grep "*.log" file1 file2 file3 file4 

가 그렙하여 현재 탐색중인 파일 FILE1 등 즉, 파일 2, 파일 3을 결정하고,이 출력을 표시 할 수 있는가?

감사합니다.

+0

은 (HTTP를 [그렙 문서]를 읽기 : // www가 .gnu.org/software/grep/manual/grep.html # Output-Line-Prefix-Control),'--with-filename' 옵션을 찾아보십시오. – larsks

+0

"찾을. - 이름"*. 로그 "타입의 - 엑스 grep"뭔가 "{} \;"시도 할 수 있습니다 – mebada

답변

-1

확실히 --with-filename 결과를 포함하는 파일과 결과를 연결하는 쉬운 방법입니다 사용,하지만 당신은 정말 현재 당신은 단순히 루프에서 호출 할 수 있습니다 검색되는 파일 grep보고 싶다면 :

for f in file1 file2 file3 file4; do 
    echo "Searching $f" 
    grep "*.log" "$f" 
done 

검색을 시작하기 전에 파일 이름이 인쇄됩니다.

+0

Downvoter는 설명해 주시겠습니까? Cb0이 나 한테 똑같은 대답을 올린 것은 분명히 일반적인 해결책입니다. – dimo414

1

의견에서 설명한대로 grep에는이 경우 -H 옵션이 있습니다. man 페이지에서

-H, --with-filename 
      Print the file name for each match. This is the default when there is more than one file to search. 

은 당신이해야 할 모든 grep -H "*.log" file1 file2 file3 file4로 명령에 플래그를 추가하고 grep가 입력 파일의 각각의 패턴 매칭을 수행하는 순서를 관찰 할 수있다.

0

grep이 일치하는 항목을 표시하지 않고 현재 검색중인 파일을 알고 싶다면 파일 핸들이 열려 있는지 확인할 수 있습니다. 이 휴대용 아니라, 리눅스,이 파일 기술자 (3) 당신이 1234grep 프로세스의 PID입니다

ls -l /proc/1234/fd/3 

로 할 수있는 검사 할 하나가 될 것으로 보인다.

0

간단한 루프와 globstar를 사용하여 모든 파일을 실행하고 이름을 반향시킨 다음 패턴을 grep 할 수 있습니다.

for file in ** 
do 
    echo "searching $file" 
    grep "$pattern" "$file" 
done 

이 같은 결과가 표시됩니다 : 당신이 특정 파일을 검색하려면

searching file1 
LINE_WITH_PATTERN 
searching file2 
searching file3 
LINE2_WITH_PATTERN 

을 ...

for file in file1 file2 file3 file4 
관련 문제