폴더에는 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 '
.