查找目录和文件

查找目录和文件

我知道我可以使用以下方法找到具有特定模式的目录:

查找 .-type d-name "tmp_*"

我知道我可以使用以下方法在目录中找到文件:

查找。-type f-name“tmp.conf”

我如何列出所有以 tmp_ 开头且包含名为 tmp.conf 的文件的目录并列出该文件的路径?

谢谢!

答案1

你可以使用

find . -path '*/tmp_*/tmp.conf'

或者

find . -regex '.*/tmp_[^/]*/tmp\.conf'

不同之处在于,第一个 (使用普通的 shell 通配符) 将匹配诸如 之类的内容,./dir/tmp_foo/subdir/tmp.conf因为/不会被 特殊处理*。第二个 (使用正则表达式)/明确排除中间的字符。

如果您只想要包含目录的路径(不包含基本tmp.conf名称,则可以使用带有说明符find的命令:-printf%h

find . -path '*/tmp_*/tmp.conf' -printf '%h\n'

或者你可以做类似的事情

find . -type d -name 'tmp_*' -execdir test -e {}/tmp.conf \; -print

或者

find . -type d -name 'tmp_*' -exec sh -c '
  for f do [ -e "$f/tmp.conf" ] && echo "$f"; done
' find-sh {} +

答案2

通往罗马的路有很多种。我可能会专门搜索名为tmp.conffiles 的文件,并打印每个文件的完整路径,例如

find . -type f -name 'tmp.conf' -exec readlink -f {} \;

相关内容