我需要搜索以某个特定名称开头的文件。可能有多个文件以某个特定模式开头,我想列出目录中存在的所有此类文件。
答案1
要完成现有答案:
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
请注意,文件扩展名也与搜索结果相关。
tree
如果我们需要列出目录树中的文件,我们也可以发出tree
搜索给定的图案喜欢:
tree -P 'abc*' # list directory tree of file starting with abc---
tree -l 'def*' # exclude files starting with def---
在这种情况下,tree
它本身支持通配符。
答案2
您可以使用find
命令搜索具有模式的文件
find . -type f -name "abc*"
上述命令将在当前工作目录下搜索以 abc 开头的文件。
-name 'abc'
将列出完全匹配的文件。例如:abc
您还可以使用
-iname
-regex
find
使用模式搜索文件名的命令选项
答案3
有很多方法可以做到这一点,具体取决于你想用它们做什么。通常,如果你只想列出它们,你可以在终端中使用以下命令进行操作:
find | grep '^\./ABC'
...并ABC
用您的文本替换。
为了理解该命令,让我们稍微分解一下:
find
列出当前目录及其子目录下的所有文件;单独使用它将仅列出那里的所有内容。请注意,find
输出以 开头的每个文件或目录./
,表示它们的路径是相对于当前目录的。意识到这一点很重要,因为这意味着我们将搜索以 开头的结果,./ABC
而不仅仅是ABC
。管道符
|
将一个命令的输出重定向到另一个命令,在本例中, 的输出find
被重定向到grep
。这称为管道。grep
获取输出并使用给定的模式对其进行过滤^\./ABC
。- 请注意,该模式用单引号引起来,
' '
以防止 shell 解释其中的特殊字符。
- 请注意,该模式用单引号引起来,
现在模式本身是用一种特殊的语法编写的,称为正则表达式, 或者正则表达式简称。如果你掌握了正则表达式,它就是一个非常强大的搜索工具,并且有以下网站:这它会更深入地教你关于它的知识,但请注意,它
grep
不是一个成熟的正则表达式引擎,你不能用它做所有事情。我们的目的是:
^
在正则表达式中匹配字符串的开头;如果它没有出现在文件名的开头,这会阻止它匹配模式。.
正则表达式中的 也有特殊含义:它表示“匹配此处的任意单个字符”。如果您想将其用作文字点,则必须\
在其前使用反斜杠将其“转义”。(是的,在我们的例子中匹配任何字符都是无害的,但我这样做是为了完整性。)
答案4
对我来说最简单的解决办法
ls | grep PATTERN
您可以在此处在 PATTERN 中给出任何正则表达式。
例如,要查找名称中包含“ab”的文件,请键入
ls | grep ".*ab.*"
要查找以“ab”开头的文件,请键入
ls | grep "^ab"