使用 ls 和通配符查找文件

Nou*_*sfi 2 ls wildcards files

pwd : ../bin在 bin 下我有一个名为datafiles.

使用元字符和ls -lL命令(带有小写和大写 L)列出datafiles目录下包含点的所有文件名,点.后的任何位置都带有字母“f”或“u”。

我试过: ls -lL datafiles *.*f*u

ls -lL datafiles .[f*u]
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答。不幸的是,没有一个解决方案像我想要的那样工作。

通过澄清问题,/bin/datafiles/file.backup是目录的根。从/bin目录中,我使用的命令ls -lL datafiles后跟元字符。

我正在寻找file.backup有一个点并后跟for u,而不是直接跟在for u(点之后的任何地方),并且不以for结尾的u

Joh*_*024 7

这将在数​​据目录中查找包含点后跟 f 或 u 但不以 f 或 u 结尾的文件:

ls -lL datafiles/*.*[fu]*[^fu]
Run Code Online (Sandbox Code Playgroud)

回答这个问题的第 1 版

你写了“f or u”。要将其写在 glob 中,请使用[fu]. 还要坚持在foru前面加上一个点,请尝试:

ls -lL .*[fu]* *.*[fu]*
Run Code Online (Sandbox Code Playgroud)

上面的第一个 glob.*[fu]*扩展为以点开头的文件(这意味着它们通常是“隐藏的”)。第二个, *.*[fu]*, 扩展为名称中某处有一个点但以点开头的文件。

隐藏文件通常用作各种程序的配置文件。如果您不想看到它们,并且通常不想看到它们,那么省略第一个 glob 并简单地使用:

ls -lL *.*[fu]*
Run Code Online (Sandbox Code Playgroud)

更多关于球体

  • *.*f*u扩展为一个文件名,该文件名包含一个点,后跟(不一定是直接)一个,f并以一个u. 换句话说,这个 glob 要求fu都出现在文件名中,并且它们按fthen的顺序出现u

    通常,*表示零个或多个任何字符。作为一种特殊情况,以上不匹配以点开头的文件,因为按照惯例,这些文件是“隐藏的”。

  • .[f*u]扩展为一个文件名,该文件名由一个点组成,后面紧跟其中一个字符f, *, or u(之后没有其他字符)。因为星号在方括号内,所以它失去了零个或多个字符的通常含义,变成了文字*