计算目录中每个文件中的降价链接

Count markdown links in each file in a directory

我想弄清楚如何计算和显示目录中每个文件中的降价链接数。

对于单个文件,我可以使用 grepwc:

grep -o -P "\[.*?\]\(.*?\)" file1.md | wc -l

但是我如何才能对目录中的每个文件单独执行此操作?以下(以及使用 ls 和其他命令的变体)为我提供了所有文件的总数:

find . -name "*.md" | xargs grep -o -P "\[.*?\]\(.*?\)" | wc -l

最终我想要一个列表,显示文件名和 grep 返回的匹配项数,例如:

file1: 7
file2: 11

尽管结果的确切格式并不重要

简单的 for 循环怎么样?

for file in *.md
do
    echo -n ${file};grep -o -P "\[.*?\]\(.*?\)" ${file} | wc -l
done

生成匹配项计数的 -c 选项会有帮助吗?如

find . -name "*.md" | xargs grep -oc -P "\[.*?\]\(.*?\)" 

你能试试这个吗:

grep -o -P "\[.*?\]\(.*?\)" *md | cut -d ":" -f 1 | sort | uniq -c

它会给出这样的输出:

     7 file1
    11 file2

如果需要,您可以使用 sed

转换输出