如何基于通配符匹配递归查找当前和子文件夹中的所有文件?
当前回答
通过管道找到grep通常更方便;它为您提供了用于任意通配符匹配的正则表达式的全部功能。
例如,要查找文件名中不区分大小写字符串“foo”的所有文件:
find . -print | grep -i foo
其他回答
使用查找:
find . -name "foo*"
find需要一个起点,所以。(点)指向当前目录。
find将查找与模式匹配的所有文件:
find . -name "*foo"
但是,如果您需要图片:
tree -P "*foo"
我很惊讶地发现,当我们递归地执行时,locate并没有被大量使用。
我将首先定位“$PWD”以获取当前感兴趣文件夹中的文件列表,然后根据需要对它们运行grep。
locate "$PWD" | grep -P <pattern>
当然,这是假设updatedb已完成,索引定期更新。这是一种查找文件的方式,比运行查找并要求它从树上下来快得多。提及这一点是为了完整。如果这棵树不是很重,就不反对使用find。
以下命令有助于搜索任何文件
无论情况如何未经许可排除文件夹的结果从根目录或您喜欢的路径搜索。更改/使用您喜欢的路径。
语法:
find <FromDirectory> -iname '<FileName wild char allowed>' 2>&1 | grep -v "Permission denied"
实例
find / -iname 'C*.xml' 2>&1 | grep -v "Permission denied"
通过管道找到grep通常更方便;它为您提供了用于任意通配符匹配的正则表达式的全部功能。
例如,要查找文件名中不区分大小写字符串“foo”的所有文件:
find . -print | grep -i foo
推荐文章
- 如何在Makefile中设置子进程的环境变量
- 如何让“wc -l”打印没有文件名的行数?
- 有效地测试Linux上的端口是否打开?
- 如何从另一个文件A中删除文件B中出现的行?
- 对以制表符分隔的文件进行排序
- Shell脚本删除超过n天的目录
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 如何检查shell脚本中是否存在命令?
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何强制从另一个SSH会话分离屏幕?
- 如何打破一个循环在Bash?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- Linux Bash中双&和分号有什么区别?
- 如何合并2 JSON对象从2个文件使用jq?