R11*_*11G 91 regex search directory
我需要搜索以某个特定名称开头的文件。可以有多个以特定模式开头的文件,我想列出目录中存在的所有此类文件。
Tak*_*kat 96
要完成现有答案:
ls默认目录列表实用程序ls可以与 shell 的通配符结合使用。搜索所有带有模式的文件abc:
ls -d abc* # list all files starting with abc---
ls -d *abc* # list all files containing --abc--
ls -d *abc # list all files ending with --abc
Run Code Online (Sandbox Code Playgroud)
请注意,文件扩展名也与搜索结果相关。
tree如果我们需要在目录树中列出文件,我们还可以发出tree搜索给定模式的命令,例如:
tree -P 'abc*' # list directory tree of file starting with abc---
tree -l 'def*' # exclude files starting with def---
Run Code Online (Sandbox Code Playgroud)
在这种情况下,tree它本身支持通配符。
dev*_*av2 56
您可以使用find命令搜索具有模式的文件
find . -type f -name "abc*"
Run Code Online (Sandbox Code Playgroud)
上述命令将搜索当前工作目录下以 abc 开头的文件。
-name 'abc'将列出完全匹配的文件。例如:abc
你也可以使用
-iname
-regex
Run Code Online (Sandbox Code Playgroud)
带有find使用模式搜索文件名的命令的选项
有很多方法可以做到这一点,具体取决于您想用它们做什么。通常,如果您只想列出它们,您可以在终端中使用:
find | grep '^\./ABC'
...并替换ABC为您的文本。
为了理解这个命令,让我们把它分解一下:
find列出当前目录及其子目录下的所有文件;单独使用它只会列出那里的所有内容。注意find输出以 开头的每个文件或目录./,表示它们的路径是相对于当前目录的。意识到这一点很重要,因为这意味着我们将搜索以 开头的结果,./ABC而不仅仅是ABC.
管道字符|将一个命令的输出重定向到另一个命令,在这种情况下,输出find重定向到grep. 这称为管道。
grep获取输出并使用给定的模式过滤它^\./ABC。
' '来,以防止 shell 解释其中的特殊字符。现在的模式本身是用称为特定语法的正则表达式,或正则表达式的简称。正则表达式是,如果你掌握了它一个非常强大的搜索工具,有网站如这其中教你关于它的更深入,但请注意,grep不是全面的正则表达式引擎,你不能用它做的一切。
为了我们的目的:
^在正则表达式中匹配字符串的开头;如果它没有出现在文件名的开头,这会阻止它匹配模式。
.在正则表达式中也有一个特殊的含义:它的意思是“匹配这里的任何单个字符”。如果您想将它用作文字点,则必须\在它之前使用反斜杠“转义”它。(是的,在我们的案例中匹配任何字符都是无害的,但我这样做是为了完整起见。)
| 归档时间: |
|
| 查看次数: |
465913 次 |
| 最近记录: |