Unix 查找:多种文件类型

发布于 2024-12-01 03:52:50 字数 97 浏览 0 评论 0原文

我想对多种文件类型运行 find -name 。 例如。

 find -name *.h,*.cpp

这可能吗?

I want to run find -name with multiple file types.
Eg.

 find -name *.h,*.cpp

Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

空‖城人不在 2024-12-08 03:52:50
$ find . -name '*.h' -o -name '*.cpp'

要在 man 页面中查找此信息,请键入 man find 并通过键入 /OPERATORS 搜索运算符并按 Enter 键。

. 对于 GNU find 来说并不是严格必需的,但在 Unix 中是必需的。在这两种情况下,引号都很重要,如果这些类型的文件出现在当前目录中,则将它们省略将导致错误。

在某些系统(例如 Cygwin)上,需要括号来使扩展集包含在内:

$ find . \( -name '*.h' -o -name '*.cpp' \)
$ find . -name '*.h' -o -name '*.cpp'

To find this information in the man page, type man find and the search for operators by typing /OPERATORS and hit enter.

The . isn't strictly necessary with GNU find, but is necessary in Unix. The quotes are important in either case, and leaving them out will cause errors if files of those types appear in the current directory.

On some systems (such as Cygwin), parentheses are necessary to make the set of extensions inclusive:

$ find . \( -name '*.h' -o -name '*.cpp' \)
挽清梦 2024-12-08 03:52:50

这就是我用的

find . \( -name "*.h" -o -name "*.cpp" \) -print

Thats what I use

find . \( -name "*.h" -o -name "*.cpp" \) -print
甜妞爱困 2024-12-08 03:52:50

您还可以使用 -regex 实用程序:

find -E 。 -iregex ".*\.(js|jsx|html|htm)"

请记住,正则表达式查看完整的绝对路径:

有关带有测试用例的正则表达式的说明,请查看:https://regex101.com/r/oY1vL2/1

-E(作为路径之前的标志)启用扩展(现代)正则表达式。

这适用于 BSD find (Mac OSX 10.10.5)

You can also use the -regex utility:

find -E . -iregex ".*\.(js|jsx|html|htm)"

Remember that the regex looks at the full absolute path:

For an explanation of that regex with test cases check out: https://regex101.com/r/oY1vL2/1

-E(as a flag BEFORE the path) enables extended (modern) regular expressions.

This is for BSD find (Mac OSX 10.10.5)

静若繁花 2024-12-08 03:52:50
find . -name "*.h" -or -name "*.cpp"

对我有用。

find . -name "*.h" -or -name "*.cpp"

works for me.

甜是你 2024-12-08 03:52:50
find . -name '*.h' -o -name '*.cc'`

适用于搜索文件。

find . \( -name '*.h' -o -name '*.cc' \)`

用于在它们上执行命令

find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
find . -name '*.h' -o -name '*.cc'`

works for searching files.

find . \( -name '*.h' -o -name '*.cc' \)`

works for executing commands on them

find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
九公里浅绿 2024-12-08 03:52:50

这就是我使用的。我强烈推荐“-regextype posix-extended”参数。

find . -type f -iname "*.log" -o -iname "*.gz" 
find . -type f \( -name "*.gz" -o -name "*.log" \)
find . -type f -regex '.*\(\.gz\|\.log\)'
find . -type f -regextype posix-extended -regex '.*.(log|gz)'

That's what I use.I strongly recommend the "-regextype posix-extended" argument.

find . -type f -iname "*.log" -o -iname "*.gz" 
find . -type f \( -name "*.gz" -o -name "*.log" \)
find . -type f -regex '.*\(\.gz\|\.log\)'
find . -type f -regextype posix-extended -regex '.*.(log|gz)'
分分钟 2024-12-08 03:52:50
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文