pwd : ../bin
在 bin 下我有一个名为 的目录datafiles
。
使用元字符和ls -lL
命令(带有小写和大写 L)列出目录下datafiles
包含点且.
点后任意位置带有字母“f”或“u”的所有文件名。
我试过:ls -lL datafiles *.*f*u
ls -lL datafiles .[f*u]
谢谢您的回答。不幸的是,这些解决方案都没有按照我想要的方式工作。
通过澄清问题,/bin/datafiles/file.backup
是目录的根。从/bin
目录中,我使用的命令ls -lL datafiles
后面跟着元字符。
我正在寻找file.backup
有一个点,后跟f
or u
,而不是直接后跟f
or u
(点后的任何位置),并且不以f
or结尾u
。
答案1
这将在数据目录中查找包含点后跟 f 或 u 但不以 f 或 u 结尾的文件:
ls -lL datafiles/*.*[fu]*[^fu]
回答这个问题的版本1
你写了“f或u”。要将其写入全局,请使用[fu]
.要还坚持在f
或u
之前加一个点,请尝试:
ls -lL .*[fu]* *.*[fu]*
上面的第一个 glob.*[fu]*
扩展为以点开头的文件(这意味着它们通常是“隐藏”的)。第二个,*.*[fu]*
,扩展到名称中某处有点但不要以点开头。
隐藏文件通常用作各种程序的配置文件。如果您不想看到它们,而且通常不想看到它们,那么请省略第一个 glob 并简单地使用:
ls -lL *.*[fu]*
更多关于 glob 的内容
*.*f*u
扩展为包含一个点、后跟(不一定是立即)f
并以 . 结尾的文件名u
。换句话说,这个 glob 要求 和 都f
出现在文件名中,并且它们按then 的u
顺序出现。f
u
通常,
*
表示零个或多个任何字符。作为一种特殊情况,上面的内容不匹配以点开头的文件,因为按照惯例,此类文件是“隐藏的”。.[f*u]
扩展为由一个点组成的文件名,紧接着是字符f
、*
或之一u
(此后没有其他字符)。由于星号位于方括号内,因此它失去了零个或多个字符的通常含义,并变成了文字*
。