一个文件夹中有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
Perl模式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 '
.