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

时间:2015-01-23 22:59:02

标签: linux bash grep

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

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

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

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

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

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

file1: 7
file2: 11

虽然结果的确切格式不重要

3 个答案:

答案 0 :(得分:1)

一个简单的for循环怎么样?

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

你能试试这个:

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

它将提供如下输出:

     7 file1
    11 file2

如果需要,可以使用sed

转换输出