如何在终端中仅显示隐藏文件?

nux*_*nux 218 command-line ls

我有一个包含数千个文件的目录,其中一些是隐藏的。

该命令ls -a列出所有文件,包括隐藏文件,但我只需要列出隐藏文件。

我应该使用什么命令?

nux*_*nux 267

命令 :

ls -ld .?* 
Run Code Online (Sandbox Code Playgroud)

只会列出隐藏文件。

解释 :

 -l     use a long listing format

 -d, --directory
              list  directory entries instead of contents, and do not derefer?
              ence symbolic links

.?* will only state hidden files 
Run Code Online (Sandbox Code Playgroud)

  • @psusi,我认为目的是从匹配中排除 `.` 和 `..`。然而,它也会排除(完全合法的)单字符隐藏文件名,例如 `.a`、`.1` 等。也许更好的扩展glob是`.!(|.)`,即文字点后跟除了没有或另一个(单个)点之外的任何东西,即`ls -d .!(|.)` (15认同)
  • 你不需要那里的两个问号, * 覆盖它( ? 只匹配任何单个字符, * 匹配任意数量的字符)。 (8认同)

小智 40

ls -d .!(|.)
Run Code Online (Sandbox Code Playgroud)

正是 OP 正在寻找的。

  • @CarlosMendoza 将成为空模式,所以这就像 `.` 后面没有(没有或 `.`),不包括 `.` 本身和 `..`。 (2认同)

ter*_*don 19

如果您只想要当前目录中的文件(无递归),您可以这样做

echo .[^.]*
Run Code Online (Sandbox Code Playgroud)

这将打印名称以 a 开头.并后跟一个或多个非点字符的所有文件的名称。请注意,对于名称以连续点开头的文件,这将失败,因此例如....foo不会显示。

您还可以使用find

find -mindepth 1 -prune -name '.*'
Run Code Online (Sandbox Code Playgroud)

-mindepth我们不匹配,确保.-prune该方法find不会访问子目录。


Mar*_*ark 19

ls -ad .*
Run Code Online (Sandbox Code Playgroud)

在 Bash 中为我工作。