0

如何获取目录内的 .pid 文件的路径。下面的代码只返回文件

root@linux [/]# ls -l $(find /* -name dovecot | grep var/run) | grep pid
-rw-------  1 root root       5 Nov 28 15:22 master.pid
4

3 回答 3

1

猜猜这就是你要找的东西:

find /var/run -name "*.pid" 2>/dev/null | grep dovecot | xargs ls -l

当您在过滤器表达式中指定(部分)路径时,您还可以在 grep 命令中缩小匹配范围。

于 2012-11-30T21:24:45.970 回答
0

我想输出的解释一定是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.

于 2012-11-30T21:27:47.000 回答
0
cat /var/run/dovecot/master.pid

?

或者 :

# readlink -f /var/run/dovecot/*.pid
/var/run/dovecot/master.pid
于 2012-11-30T21:41:29.707 回答