在 Linux 命令行中仅显示隐藏文件
使用 ls -a 命令可以轻松显示 Linux 中的隐藏文件。但是如何才能只看到隐藏文件呢?
在 Linux 中显示隐藏文件非常容易。您可以按以下方式使用 ls 命令:
ls -a没关系。您可以看到隐藏文件,其名称以点 (.) 开头。
但是您可以看到当前目录中的所有文件,隐藏文件和常规文件。
如果您只想查看隐藏文件而不是常规文件怎么办?
没有像 -a 和 -A 这样的现成选项。然而,您总能找到一种方法来通过奇妙的管道重定向组合几个命令来实现目标。
只显示隐藏的文件和目录
要仅显示隐藏文件和目录,最简单的方法是使用 ls -a 显示隐藏文件,然后使用 grep 只过滤以 . (点)。
ls -a | grep "^\."^的意思是“开始于”。点字符需要用\转义,并且由于您使用了特殊字符,因此所有内容都用双引号引起来。使用“^\.”,您可以告诉 grep 命令仅显示以点开头的结果。
让我分享一个例子。这是我的示例目录的内容:
abhishek@linux:~/toto$ ls -l
total 352
-rw-rw-r-- 1 abhishek abhishek 45443 May 24 09:03 apt-get.pdf
-rw-rw-r-- 1 abhishek abhishek 29983 May 27 16:07 bash.pdf
-rw-rw-r-- 1 abhishek abhishek 249773 May 26 14:56 cronjob-cheatsheet.png
-rw-rw-r-- 1 abhishek abhishek 4943 Jun 2 20:09 gnome-console-voiceover
-rw-rw-r-- 1 abhishek abhishek 12721 May 29 12:29 members.2022-05-29.csv
-rw-rw-r-- 1 abhishek abhishek 143 May 30 12:06 routes.yaml
现在我将过滤掉它,以便它只显示隐藏的文件和目录:
abhishek@linux:~/toto$ ls -a | grep "^\."
.
..
.hidden-file
.hid_dir
.member.csv
它显示出特殊性。 (当前目录)和..(父目录)目录。您可以使用 -A 选项而不是 -a 过滤掉它们。
abhishek@linux:~/toto$ ls -A | grep "^\."
.hidden-file
.hid_dir
.member.csv这更好,对吧?如果您想在一张图像中查看它们,请使用以下屏幕截图:
这里还有一个小问题。尽管您可以在单独的行中看到它们,但您无法区分它是文件还是目录。
如果您想要这样,还有另一种方法可以实现这一目标。
替代方法
要以长列表格式仅显示隐藏的文件和目录(以便您可以查看它是文件还是目录),您可以使用以下命令:
ls -ld .*此处的示例将显示以下结果:
drwxrwxr-x 3 abhishek abhishek 4096 Jun 30 10:38 .
drwxr-x--- 28 abhishek abhishek 4096 Jun 29 15:15 ..
-rw-rw-r-- 1 abhishek abhishek 41145 May 27 15:24 .hidden-file
drwxrwxr-x 2 abhishek abhishek 4096 Jun 30 10:38 .hid_dir
-rw-rw-r-- 1 abhishek abhishek 12721 Jun 3 09:41 .member.csv
它是如何工作的?首先,.* 部分是 shell 通配符。它就在输入上扩展。所以,基本上,您可以将其视为:
ls -ld . .. .hidden-file .hid_dir .member.csv选项 -d 的使用在这里很重要。它告诉 ls 仅列出目录,而不列出其内容。否则,ls 命令还将显示 .hid_dir 的内容。
如果您不想显示 .和 .. 目录,您可以使用 ls 命令,如下所示:
ls -ld .!(|.)显然,重点关注 .!(|.) 部分。这是一个模式。 !是否定并且 |是 OR 条件。 (|.) 表示无任何内容或点。当你用 ! 否定它时,你是在说它不应该是“nothing”或点。将它们组合在一起.!(|.),您所说的模式是其中 .后面跟着一些东西(因此排除了单点),除了另一个点(因此排除了双点)。
您现在就得到了想要的结果:
-rw-rw-r-- 1 abhishek abhishek 41145 May 27 15:24 .hidden-file
drwxrwxr-x 2 abhishek abhishek 4096 Jun 30 10:38 .hid_dir
-rw-rw-r-- 1 abhishek abhishek 12721 Jun 3 09:41 .member.csv仅显示隐藏文件(不显示隐藏目录)
仅显示隐藏文件而不显示隐藏目录非常容易。用这个:
ls -ld .* |grep -v ^d您将显示隐藏文件和目录,然后过滤掉以 d 开头的条目(它们是目录)。
abhishek@linux:~/toto$ ls -ld .*
drwxrwxr-x 3 abhishek abhishek 4096 Jun 30 10:38 .
drwxr-x--- 28 abhishek abhishek 4096 Jun 29 15:15 ..
-rw-rw-r-- 1 abhishek abhishek 41145 May 27 15:24 .hidden-file
drwxrwxr-x 2 abhishek abhishek 4096 Jun 30 10:38 .hid_dir
-rw-rw-r-- 1 abhishek abhishek 12721 Jun 3 09:41 .member.csv
abhishek@linux:~/toto$ ls -ld .* |grep -v ^d
-rw-rw-r-- 1 abhishek abhishek 41145 May 27 15:24 .hidden-file
-rw-rw-r-- 1 abhishek abhishek 12721 Jun 3 09:41 .member.csv
当然,还可以有其他几种可能的方式。对于此类内容,find 命令总是存在的。
如果您能想到不同的解决方案,请在评论部分分享。

