首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bash回显包含匹配文件的目录?

如何使用Bash回显包含匹配文件的目录?
EN

Stack Overflow用户
提问于 2010-02-18 01:00:53
回答 7查看 29.8K关注 0票数 37

我想写一个bash脚本,它将使用包含特定文件的所有目录的列表。我可以使用find回显每个匹配文件的路径。我只想列出至少包含一个匹配文件的目录的路径。

例如,给定以下目录结构:

代码语言:javascript
复制
dir1/
    matches1
    matches2
dir2/
    no-match

该命令(查找'matches*')将仅输出dir1的路径。

作为额外的背景知识,我使用它来查找包含一个Java .class文件的每个目录。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-02-18 01:03:04

代码语言:javascript
复制
find . -name '*.class' -printf '%h\n' | sort -u

来自man find

-printf格式

文件名的%h前导目录(最后一个元素除外)。如果文件名不包含斜杠(因为它在当前目录中),则%h说明符将扩展为".".

票数 70
EN

Stack Overflow用户

发布于 2013-12-15 23:31:16

OS XFreeBSD上,使用lacks the -printf optionfind,这将起作用:

代码语言:javascript
复制
find . -name *.class -print0 | xargs -0 -n1 dirname | sort --unique

xargs中的-n1将每次调用dirname时从标准输入获取的最大参数数设置为1

票数 34
EN

Stack Overflow用户

发布于 2010-02-18 01:04:32

GNU查找

代码语言:javascript
复制
find /root_path -type f -iname "*.class" -printf "%h\n" | sort -u
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2282686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档