使用find获取文件路径而不提供文件名

时间:2012-11-30 21:10:45

标签: bash find command

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

cat /var/run/dovecot/master.pid

或者:

# readlink -f /var/run/dovecot/*.pid
/var/run/dovecot/master.pid