在Linux中,怎样只显示隐藏文件?

系统 Linux
要只显示隐藏的文件和目录,最简单的方法是使用 ls -a 显示隐藏的文件,然后使用 grep 过滤以 . 开头的文件。

在Linux中显示隐藏文件很简单,这样使用 ls 命令即可:  

ls -a

这样你就能看到被隐藏的文件,其文件名称是以一个点 . 开头的。

但是这样的话,你会看到所有文件,包括隐藏的,和正常的(非隐藏)文件,都会被显示出来。

怎样才能只显示隐藏的文件,而不显示正常的文件呢?

目前没有现成的命令可用。不过可以通过另外一种方式,比如使用管道重定向组合ls命令。

只显示隐藏的文件和目录

要只显示隐藏的文件和目录,最简单的方法是使用 ls -a 显示隐藏的文件,然后使用 grep 过滤以 .  开头的文件。

ls -a | grep "^\."

^表示以 . 开头。字符 . 需要使用反斜杠 \ 转义,因为它属于特殊字符。所有的内容都需要用引号包括进来。上述命令告诉 grep 只显示以点开头的结果。

我们来看个例子,如下是一个目录下的正常文件:

[gliu@fedora work]$ ls -l
total 0
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 file1.txt
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 file2.txt
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 file3.txt
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 file4.txt
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 file5.txt
drwxrwxr-x. 1 gliu gliu 0 Jun 30 20:32 files

然后我对结果进行过滤,只显示隐藏的文件和目录:

[gliu@fedora work]$ ls -a | grep "^\."
.
..
.bash.pdf
.hiddenFiles
.hiddenfile.txt
.tmp.txt

结果中包含了一个点 . ,表示当前目录,还有两个点的 .. 表示父目录。你可以使用 -A 选项来代替 -a ,这样就可以过滤掉这两个目录。我们再试一次:

[gliu@fedora work]$ ls -A | grep "^\."
.bash.pdf
.hiddenFiles
.hiddenfile.txt
.tmp.txt

这样看起来,好多了,是吧?

这样还有一个小问题,虽然你能看到隐藏的文件,但是你无法区分它们到底是文件,还是目录。

我们还有另外一个方法。

替代方案

以长列表的方式显示隐藏的文件和目录(这样可以区分它们是文件还是目录),可以使用如下方法:

ls -ld .*

结果如下:

[gliu@fedora work]$ ls -ld .*
drwxrwxr-x. 1 gliu gliu 188 Jun 30 20:32 .
drwxrwxr-x. 1 gliu gliu 32 May 7 14:27 ..
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 .bash.pdf
drwxrwxr-x. 1 gliu gliu 0 Jun 30 20:32 .hiddenFiles
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:29 .hiddenfile.txt
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 .tmp.txt

这是什么原理?首先 .* 是一个 shell 通配符,表示所有以 . 开头的文件,基本上你可以这样理解:将上述命令看成是如下语句:

ls -ld . .. .bash.pdf .hiddenFiles .hiddenfile.txt .tmp.txt

选项 d 是很重要的,它告诉 ls 命令如果有目录的话只列出目录名称,而不要它的子目录。否则的话,输出结果会包含其子目录中的内容。

如果你不想要列出 . 和 .. 这两个目录,可以使用如下命令:

ls -ld .!(|.)

注意到 .!(|.) 了吧,这是一个正则表达式。叹号 ! 表示“非”,竖线 | 表示“或者”。(|.) 表示无或点 .。当你在前面加上一个叹号 ! 则表示不要“无”或 . 。它们结合在一起, .!(|.) 就是一个正则表达式,表示 . 后面跟某个东西(因此可排除单点 .),但也排除后跟一个点 .(因此排除双点 ..)。

[gliu@fedora work]$ ls -ld .!(|.)
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 .bash.pdf
drwxrwxr-x. 1 gliu gliu 0 Jun 30 20:32 .hiddenFiles
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:29 .hiddenfile.txt
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 .tmp.txt

只显示隐藏的文件(而不要隐藏的目录)

只显示隐藏文件而不显示隐藏目录非常容易,使用如下命令:

ls -ld .* |grep -v ^d

显示隐藏的文件和目录,然后过滤掉以 d 开头的条目(即目录)。

[gliu@fedora work]$ ls -ld .* |grep -v ^d
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 .bash.pdf
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:29 .hiddenfile.txt
-rw-rw-r--. 1 gliu gliu 0 Jun 30 20:28 .tmp.txt

当然,还有其他的方法,比如使用 find 命令。如果你有别的方法,欢迎讨论。

责任编辑:庞桂玉 来源: TIAP
相关推荐

2022-07-08 15:09:26

Linux

2016-12-13 10:22:54

Mac OS X显示服务

2018-01-24 15:35:22

Linux隐藏文件管理器

2009-06-21 13:50:03

Linux隐藏文件

2019-01-22 16:10:23

rcm隐藏文件Linux

2017-03-01 14:16:36

Linux文件管理器隐藏文件

2017-03-21 10:11:36

Windows 10Windows文件扩展名

2009-07-22 17:35:23

代码隐藏文件ASP.NET

2017-11-23 15:25:28

命令隐藏windows

2018-03-05 18:50:22

Linux主目录隐藏文件

2020-05-28 15:35:21

Linux数据文件图像

2015-10-12 16:20:55

隐藏文件夹Windows

2019-09-24 19:00:41

Linuxrm命令unlink命令

2010-11-04 18:11:35

UI设计SilverlightWindows Pho

2015-07-20 17:17:41

SQL Server

2010-09-14 09:24:40

CSS实例

2019-06-19 13:50:21

NeofetchLinux

2019-12-03 19:04:50

Windows 7Windows 10电脑

2019-09-24 20:07:30

Linux移动文件 命令

2018-04-08 11:10:45

GitLinux开源
点赞
收藏

51CTO技术栈公众号