两者都匹配和在unix中与多列对齐

两者都匹配和在unix中与多列对齐

一个文件夹中有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递归文件搜索
  • PPerl模式
  • 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 '.

相关内容