假设我当前的工作目录名为my_dir,我有几个不同的文件:
file1
file_dog
filedog_1
dog_file
如何计算我的目录中出现“dog”(应该是3)的实例数?
谢谢!
答案 0 :(得分:1)
您可以使用grep
中的-c选项grep -c:
Suppress normal output; instead print a count of matching lines for each input file.
ls -1 | grep -c dog
或:
ls -1 *[dD][oO][gG]* | wc -l
答案 1 :(得分:1)
即使文件名包含换行符,以下解决方案仍然有效:
$ touch file1 file_dog filedog_1 dog_file
$ find . -maxdepth 1 -name '*dog*' -print0 | grep -zc .
3
工作原理:
find . -maxdepth 1 -name '*dog*' -print0
这将查找当前目录中名称为dog
的所有文件,并将其打印在以空分隔的列表中。由于nul字符是文件名中不允许的少数字符之一,因此这是安全的。如果您想要不区分大小写的匹配(以便Dog
也匹配),请将-name
替换为-iname
。
grep -zc .
这将读取一个以分隔开的列表并对行进行计数。
-z
告诉grep
输入是分开的
-c
告诉grep
取消正常输出并计算匹配数
.
告诉grep
匹配任何内容。