디렉터리에서 문자열 검색 - 파일 이름 없이 출력 가져오기

디렉터리에서 문자열 검색 - 파일 이름 없이 출력 가져오기

패턴과 일치하는 행을 표시하기 위해 다음 명령을 실행하고 있습니다.

./files/ -name "*.txt" -print0 xargs -0 grep "5|20150507" 찾기

출력은 다음과 같습니다

./files/N1.942_0000.txt:78787878|13|5|20150507221152 ./files/N1.942_0000.txt:78787878|13|5|20150507221156 ./files/N1.943_0002.txt:1 22121 2 |13|5 | 20150507222004./files/N1.810_0000.txt:8892716618|13|5|20150507215150./files/N1.442_0001.txt:8648648648|13|5|20150507221636./file s/N1 .442_0001.txt:8648648648|13 |5 |20150507221638 ./files/N1.442_0001.txt:7406079160|13|5|20150507221941

하지만 아래와 같이 파일 이름 없이 출력을 원합니다.

86486 48648|13|5|20150507221636
8648648648 |13|5|
20150507221638 7406079160 | 20150507221941



답변1

grep명령에는 -r옵션이 있습니다

디렉토리에서 텍스트를 재귀적으로 검색합니다.

아래 예:

grep -r "5|20150507" ./ | awk -F ':' {'print $2'}

답변2

"-h" 옵션과 함께 grep을 사용하십시오.

 -h, --no-filename
             Suppress  the  prefixing  of file names on output.  This is    
  the default when there is only one file (or only standard input) to
          search.

./files/ -name "*.txt" -print0 | xargs -0 grep -h "5|20150507" 찾기

답변3

find ./files/ -name "*.txt" -print0 | xargs -0 grep "5|20150507" | awk 'BEGIN{FS=":"} {print $2}'

특수 문자일 수 있으므로 구분 기호 "FS="를 사용해야 할 수도 있습니다.

관련 정보