在Ubuntu 14.04的/var/run目录用grep查找.pid文件无输出求助
解决Ubuntu 14.04 LTS下/var/run目录查找.pid文件的问题
嘿,我懂你现在的困扰——用sudo grep -nr '*.pid' .没输出,完全是因为这个命令的用法搞错方向啦!咱们来一步步捋明白:
为什么原来的命令没效果?
grep本质是搜索文件内容的工具,你加的-nr参数是让它递归遍历所有文件,搜索里面的字符串。但你写的'*.pid'作为正则表达式,在grep里的意思是「匹配0个或多个*字符,后面跟着.pid」,这跟你要找「后缀为.pid的文件」完全不是一回事,自然搜不到结果。
正确的解决办法
方法1:用find命令(最推荐,专门用来找文件)
find是Linux里定位文件的标准工具,直接指定文件名规则就行:
sudo find /var/run -type f -name "*.pid"
参数解释:
-type f:只找普通文件(排除目录、链接等非文件类型)-name "*.pid":精确匹配后缀为.pid的文件名,加引号是避免shell提前解析通配符
方法2:用grep配合文件名匹配(如果非要用grep)
要是你坚持想用grep,可以用它的--include参数限定搜索的文件类型,再加-l参数只输出匹配的文件名:
sudo grep -r -l --include="*.pid" "." /var/run
这里的.是匹配任意内容(因为我们只是要列出符合.pid后缀的文件,不需要搜索具体内容),--include="*.pid"告诉grep只关注这类文件。
方法3:用ls+grep组合
更简单的方式是先列出目录内容,再筛选文件名:
sudo ls -la /var/run | grep "\.pid$"
\.pid$是正则表达式,\用来转义.(因为.在正则里代表任意字符),$表示匹配行的结尾,刚好对应文件名后缀。
小提醒
Ubuntu 14.04的/var/run是临时文件系统(tmpfs),系统重启后里面的.pid文件会被清空,这是正常现象哦。
内容的提问来源于stack exchange,提问作者Codieroot




