如何基于通配符匹配递归查找当前和子文件夹中的所有文件?
当前回答
如果已安装,请尝试使用fd命令。安装说明。
查找以“name”开头的所有文件:
fd "name*"
此命令忽略所有.hhidden和.gitignoreed文件。
要包含.gitignoreed文件,请添加-I选项,如下所示:
fd -I "name*"
要包含隐藏文件,请添加-H选项,如下所示:
fd -H "name*"
其他回答
用于文件搜索
查找/-xdev-name settings.xml→ 整个计算机查找。/-xdev-名称设置.xml→ 当前目录及其子目录
对于具有扩展名类型的文件:
find . -type f -name "*.iso"
fd
如果查找速度太慢,请尝试fd实用程序,这是一个简单而快速的替代方法,可以在Rust中查找。
语法:
fd PATTERN
演示:
主页:https://github.com/sharkdp/fd
通过管道找到grep通常更方便;它为您提供了用于任意通配符匹配的正则表达式的全部功能。
例如,要查找文件名中不区分大小写字符串“foo”的所有文件:
find . -print | grep -i foo
如果您的shell支持新的globbing选项(可以通过:shopt-s globstar启用),则可以使用:
echo **/*foo*
递归查找任何文件或文件夹。这得到了Bash 4、zsh和类似外壳的支持。
我个人已经定义了这个shell函数:
f() { find . -name "*$1*"; }
注意:以上行可以直接粘贴到shell或添加到用户的~/.bashrc文件中。
然后我可以通过键入以下内容来查找任何文件:
f some_name
或者,您可以使用具有简单语法的fd实用程序,例如fd模式。
使用查找:
find . -name "foo*"
find需要一个起点,所以。(点)指向当前目录。
推荐文章
- 如何在Makefile中设置子进程的环境变量
- 如何让“wc -l”打印没有文件名的行数?
- 有效地测试Linux上的端口是否打开?
- 如何从另一个文件A中删除文件B中出现的行?
- 对以制表符分隔的文件进行排序
- Shell脚本删除超过n天的目录
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 如何检查shell脚本中是否存在命令?
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何强制从另一个SSH会话分离屏幕?
- 如何打破一个循环在Bash?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- Linux Bash中双&和分号有什么区别?
- 如何合并2 JSON对象从2个文件使用jq?