And*_*een 5 search filenames regular-expression files
我想在 Linux(本例中为 Ubuntu)上的主文件夹中找到包含与特定正则表达式匹配的所有文件。是否有一个简单的 Unix 命令可以用来执行此操作?
例如,我想查找我的主文件夹中名称包含以下正则表达式匹配项的所有文件(此处使用 Javascript 样式表示法):((R|r)eading(T|t)est(D|d)ata)
grep有一个递归-r选项,它将在每个子目录中的每个文件中搜索该模式。
该-l选项仅列出包含该模式的文件。如果您想要每个文件中的匹配项计数,请使用-c-l 或 -c,如果您想查看匹配项,请不要使用 -l 或 -c。
(R|r)只是一种冗长的写法[Rr]。它也比类慢(但还不够重要,除非它处于运行数百万次的循环中):
grep -lr '[Rr]eading[Tt]est[Dd]ata' ~/
完全不区分大小写:
grep -lir 'readingtestdata' ~/
如果您只想搜索 ~ 中的文件而不是子目录中的文件,那么您可以使用find:
find ~/ -maxdepth 1 -type f -print0 | xargs -0r grep -l '[Rr]eading[Tt]est[Dd]ata'