如何基于通配符匹配递归查找当前和子文件夹中的所有文件?


当前回答

以下命令将列出当前及其子文件夹中具有确切名称“pattern”(例如)的所有文件。

查找。/-名称“pattern”

其他回答

以下命令有助于搜索任何文件

无论情况如何未经许可排除文件夹的结果从根目录或您喜欢的路径搜索。更改/使用您喜欢的路径。

语法:

find <FromDirectory> -iname '<FileName wild char allowed>'   2>&1 | grep -v "Permission denied"

实例

find / -iname 'C*.xml' 2>&1 | grep -v "Permission denied"

如果您的shell支持新的globbing选项(可以通过:shopt-s globstar启用),则可以使用:

echo **/*foo*

递归查找任何文件或文件夹。这得到了Bash 4、zsh和类似外壳的支持。


我个人已经定义了这个shell函数:

f() { find . -name "*$1*"; }

注意:以上行可以直接粘贴到shell或添加到用户的~/.bashrc文件中。

然后我可以通过键入以下内容来查找任何文件:

f some_name

或者,您可以使用具有简单语法的fd实用程序,例如fd模式。

用于文件搜索

查找/-xdev-name settings.xml→ 整个计算机查找。/-xdev-名称设置.xml→ 当前目录及其子目录

对于具有扩展名类型的文件:

find . -type f -name "*.iso"

如果已安装,请尝试使用fd命令。安装说明。

查找以“name”开头的所有文件:

fd "name*"

此命令忽略所有.hhidden和.gitignoreed文件。

要包含.gitignoreed文件,请添加-I选项,如下所示:

fd -I "name*"

要包含隐藏文件,请添加-H选项,如下所示:

fd -H "name*"

你也可以使用ripgrep。

例子:

搜索所有包含子字符串psql的文件名,

rg --files | rg psql