计算目录中每个文件中的降价链接
Count markdown links in each file in a directory
我想弄清楚如何计算和显示目录中每个文件中的降价链接数。
对于单个文件,我可以使用 grep
和 wc
:
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
转换输出
我想弄清楚如何计算和显示目录中每个文件中的降价链接数。
对于单个文件,我可以使用 grep
和 wc
:
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