我正在试图弄清楚如何计算和显示目录中每个文件中的降价链接数。
对于单个文件,我可以使用grep
和wc
:
grep -o -P "\[.*?\]\(.*?\)" file1.md | wc -l
但是如何为目录中的每个文件单独执行此操作?以下(以及使用ls
和其他命令的变体)为我提供了所有文件的总计:
find . -name "*.md" | xargs grep -o -P "\[.*?\]\(.*?\)" | wc -l
最终我想要一些显示文件名和grep返回的匹配数的列表,如:
file1: 7
file2: 11
虽然结果的确切格式不重要
答案 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