我如何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 --help
或man locate
另外,您可以configuration定位以通过cron作业在计划的时间更新其数据库,因此在1AM更新db的示例cron将如下所示:
0 1 * * * updatedb
这些cron作业需要由rootconfiguration,因为updatedb需要root权限来遍历整个文件系统。
您可以使用 :
# 找 。 -type f -name'text_for_search'
如果你想使用REGX使用-iname
# 找 。 -type“f_iname ” text_for_search '