使用 ls 和通配符查找文件

使用 ls 和通配符查找文件

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有一个点,后跟for u,而不是直接后跟for u(点后的任何位置),并且不以for结尾u

答案1

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

ls -lL datafiles/*.*[fu]*[^fu]

回答这个问题的版本1

你写了“f或u”。要将其写入全局,请使用[fu].要还坚持在fu之前加一个点,请尝试:

ls -lL .*[fu]* *.*[fu]*

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

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

ls -lL *.*[fu]*

更多关于 glob 的内容

  • *.*f*u扩展为包含一个点、后跟(不一定是立即)f并以 . 结尾的文件名u。换句话说,这个 glob 要求 和 都f出现在文件名中,并且它们按then 的u顺序出现。fu

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

  • .[f*u]扩展为由一个点组成的文件名,紧接着是字符f*或之一u(此后没有其他字符)。由于星号位于方括号内,因此它失去了零个或多个字符的通常含义,并变成了文字*

相关内容