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

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

使用查找 :

 find . -name "foo*" 

find需要的起点,和. (点)指向当前目录。

findgrep的pipe道往往更方便; 它为您提供了用于任意通配符匹配的正则expression式的全部function。

例如,在文件名中查找所有带有不区分大小写的string“foo”的文件:

 ~$ find . -print | grep -i foo 

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

 find . -name "*foo" 

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

 tree -P "*foo" 

希望这可以帮助!

 find -L . -name "foo*" 

在less数情况下,我需要-L参数来处理符号目录链接。 默认情况下,符号链接被忽略。 在这些情况下,这是相当混乱的,因为我会改变目录到一个子目录,看到匹配模式的文件,但发现不会返回文件名。 使用-L解决了这个问题。 查找的符号链接选项是-P -L -H

如果你的shell支持扩展globbing(启用它: shopt -s globstar ),你可以使用:

 echo **/*foo* 

以recursion方式查找任何文件或文件夹。 这是由Bash 4,zsh和类似的shell支持的。

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

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

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

用于扩展types的文件

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

searchrecursion文件的默认方式,在大多数情况下是可用的

 find . -name "filepattern" 

它从您所在的当前目录中开始recursion遍历文件名或模式。 使用find命令,可以使用通配符和各种开关来查看完整的选项列表,types

 man find 

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

 find --help 

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

 sudo updatedb 

而且,用它来寻找一些特定的文件types

 locate filename 

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

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

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

另外,您可以configuration定位以通过cron作业在计划的时间更新其数据库,因此在1AM更新db的示例cron将如下所示:

 0 1 * * * updatedb 

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

您可以使用 :

# 找 。 -type f -name'text_for_search'

如果你想使用REGX使用-iname

# 找 。 -type“f_inametext_for_search '