如何获取目录内的 .pid 文件的路径。下面的代码只返回文件
root@linux [/]# ls -l $(find /* -name dovecot | grep var/run) | grep pid
-rw------- 1 root root 5 Nov 28 15:22 master.pid
猜猜这就是你要找的东西:
find /var/run -name "*.pid" 2>/dev/null | grep dovecot | xargs ls -l
当您在过滤器表达式中指定(部分)路径时,您还可以在 grep 命令中缩小匹配范围。
我想输出的解释一定是find
命令找到了一个目录名如:
/var/run/dovecot
然后你ls -l
在目录上做一个,它列出了目录中的文件,没有任何通往它的路径。您需要找到一种可靠的方法来列出目录中的文件及其完整路径名。
一种方法——我认为不是好方法——是:
find $(find /* -name dovecot -type d | grep var/run) -type f -name '*.pid' \
-exec ls -l {} +
这使用您的第一个find
命令来获取您感兴趣的目录,然后find
再次运行以查找.pid
文件和执行程序ls -l
。该+
符号表示其find
行为有点像xargs
,将许多文件名捆绑在一起形成一个ls -l
.
cat /var/run/dovecot/master.pid
?
或者 :
# readlink -f /var/run/dovecot/*.pid
/var/run/dovecot/master.pid