【发布时间】:2014-06-11 17:57:25
【问题描述】:
我用过这段代码
#!/bin/bash
ls -l
echo -n "Number of simple files : "
ls -l | egrep '^-' | wc -l
echo -n "Number of directories : "
ls -l | egrep '^d' | wc -l
echo -n "Number of hidden files : "
ls -la | egrep '^.*\.$' | wc -l
echo -n "Number of hidden directories : "
ls -la | egrep '^d.*\.$' | wc -l
echo " End"
虽然我可以理解前两个 egrep 是如何工作的,但我不知道最后一个是如何工作的
两个工作。更具体地说,这是什么意思 '^.*\.$' ?
我想要一个以 . (隐藏文件)然后我应该如何塑造我的正则表达式?
【问题讨论】:
-
现在,如果您的真正问题不是如何计算隐藏文件,而是正则表达式
^.*\.$的含义,您应该将其作为单独的问题提出。 -
最后两个不起作用。它们分别计算名称以句点结束的常规文件和目录的数量。
-
对于这里的任何其他人,一些指向由 freenode #bash 频道维护的 wiki 的链接:BashFAQ #4 处理一般计算文件的最佳实践方法。 ParsingLs 详细描述了为什么
ls不应该用于这种用例,以及可用的替代方案。