둘 다 일치그리고유닉스에서 여러 열에 정렬

둘 다 일치그리고유닉스에서 여러 열에 정렬

폴더에는 200개 이상의 파일이 있으며, 그 중 일부에는 다음 패턴을 포함하는 레코드가 있습니다.

ABCD<Space><tab><Space>,EFGH,<SPACE>,.

수정하거나 교체하지 않고 이 형식의 파일 수만 알고 싶습니다.

답변1

Grep에는 Perl 정규식 모드(-P) 및 카운트 전용(-c)이 있습니다.

$ grep -c -P 'ABCD\ \t\ ,EFGH,\ ,' file
1

답변2

이 패턴을 사용하여 파일 수를 얻으십시오.

grep -rlP "ABCD \t ,EFGH, " directory   | wc -l
  • r재귀적 파일 검색
  • P펄 모드
  • l인쇄는 일반적으로 출력에 각 입력 파일의 이름을 인쇄합니다. 검색은 첫 번째 일치에서 중지됩니다.

파일 목록을 가져옵니다.

grep -rlP "ABCD \t ,EFGH, " directory   |  awk -F '/' '{print $2}' 

답변3

이 명령은 현재 디렉터리에서 패턴과 일치하는 파일 수를 계산합니다.

grep -Psl 'ABCD \t ,EFGH, ,' * | wc -l

(대부분의 다른 솔루션과 마찬가지로 이름에 개행 문자가 포함된 파일을 잘못 계산합니다. GNU 세계에서는 grep -PZsl '...pattern...' * | tr '\n\0' 'X\n' | wc -l이 문제를 해결하는 데 사용할 수 있습니다.)

답변4

그리고zsh

(cd folder && grep -l $' \t ' ./*(D.)) | grep -c /

folder적어도 한 번은 계산 디렉터리에 포함됩니다 <space><tab><space>.

재귀적으로:

(cd folder && grep -l $' \t ' .//**/*(D.)) | grep -c //

재귀적으로 다음을 사용할 수도 있습니다 find.

(cd folder && find .//. -type f -exec grep -l $' \t ' {} +) | grep -c //

첫 번째 열에 있는 파일 만 고려하려면 <space><tab><space>모드를 로 변경하세요 $'^[^,]* \t '.

관련 정보