linux - unix查找文件 - 查询该目录及子目录下所有的以conf为后缀的文件




如何根据通配符匹配递归地查找当前文件夹和子文件夹中的所有文件? (7)

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


find将找到所有匹配模式的文件:

find . -name "*foo"

但是,如果你想要一张照片:

tree -P "*foo"

希望这可以帮助!


为此使用find

find . -name "foo*"

find需要的一个起点,并且. (点)指向当前目录。


如果要使用通配符搜索特殊文件,可以使用以下代码:

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

假设你想从这里搜索每个.conf文件:

. 意味着从这里开始搜索(当前位置)
-type表示这里是文件(f)的搜索项目的类型。
-name表示您要搜索带* .conf名称的文件。


您可以使用:

# find . -type f  -name 'text_for_search'

如果您想使用REGX,请使用-iname

# find . -type f  -iname 'text_for_search'

搜索递归文件的默认方式,在大多数情况下可用

find . -name "filepattern"

它会从您所在的当前目录内开始对文件名或模式进行递归遍历。 通过find命令,可以使用通配符和各种开关来查看完整的选项列表,类型

man find

或者手册页在您的系统中不可用

find --help

然而,现在有更多现代和更快的工具可以找到,这些工具遍历整个文件系统并为您的文件编制索引,其中一个常用工具是locate或slocate / mlocate,您应该检查操作系统的手册,了解如何安装它,一旦安装它需要启动数据库,如果安装脚本不为你做,它可以通过键入来手动完成

sudo updatedb

并且,用它来寻找某种特定的文件类型

locate filename

或者,要从当前目录中查找文件名或模式,可以键入:

 pwd | xargs -n 1 -I {} locate "filepattern"

它将查看其文件数据库并快速打印出与您输入的模式相匹配的路径名称。 要查看完整的定位选项列表,请键入: locate --helpman locate

此外,您可以配置定位以通过cron作业在预定时间更新其数据库,因此在1AM更新db的示例cron看起来如下所示:

0 1 * * * updatedb

这些cron作业需要由root配置,因为updatedb需要root权限来遍历整个文件系统。


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

用于扩展类型的文件

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

find -L . -name "foo*"

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





shell