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

こ雲淡風輕ζ 提交于 2019-12-30 09:48:52

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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


#1楼

用管道发现grep通常更方便; 它为您提供了用于任意通配符匹配的正则表达式的全部功能。

例如,要查找文件名中不区分大小写的字符串“ foo”的所有文件:

~$ find . -print | grep -i foo

#2楼

如果您的外壳支持新的通配选项 (可以通过以下方式启用: shopt -s globstar ),则可以使用:

echo **/*foo*

递归查找任何文件或文件夹。 Bash 4,zsh和类似的shell支持此功能。


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

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

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

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

f some_name

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


#3楼

find -L . -name "foo*"

在某些情况下,我需要-L参数来处理符号目录链接。 默认情况下,符号链接被忽略。 在那些情况下,这很令人困惑,因为我会将目录更改为子目录,并查看与模式匹配的文件,但是find不会返回文件名。 使用-L解决了该问题。 查找的符号链接选项为-P -L -H


#4楼

find <directory_path>  -type f -name "<wildcard-match>"

在通配符匹配中,您可以提供要匹配的字符串,例如* .c(对于所有c文件)


#5楼

用于文件搜索
find / -xdev -name settings.xml >整个计算机
find ./ -xdev -name settings.xml >当前目录及其子目录

用于扩展名类型的文件

find . -type f -name "*.iso"
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!