如何显示名称与ls模式匹配的隐藏文件?

时间:2017-05-21 11:38:29

标签: bash

考虑一个包含以下内容的目录。 abc-dir1是一个目录。其他是文件。

abc-dir1
abc-file1
.abc-file2
def-file1

ls -d *abc*生成列表1:

abc-dir1  
abc-file1

我想显示名称与*abc*匹配的所有目录和文件(包括隐藏目录和文件)。清单2是我想要的:

abc-dir1  
abc-file1
.abc-file2

但是ls -a -d *abc*仍然会生成列表1.因此*abc*的存在似乎会覆盖-a选项的效果。有没有办法用ls显示列表2?

3 个答案:

答案 0 :(得分:5)

隐藏文件以点开头,常规文件不是,所以:

ls -d {.,}*abc*

答案 1 :(得分:4)

开启dotglob选项。

$ shopt -s dotglob
$ printf '%s\n' *abc*
abc-dir1  
abc-file1
.abc-file2

如果您确实要使用abc(包含或不包含初始.)显示“ start ”的文件,请使用扩展模式。

$ shopt -s extglob
$ printf '%s\n' ?(.)abc*

我使用printf代替ls。除非您使用ls的一个或多个选项进行排序,显示其他元数据等,否则无需仅运行外部程序来显示文件名。

答案 2 :(得分:0)

ls -al和grep的组合就可以了..

mebada@mebada-T430:~$ ls -al | grep zil
drwx------   4 mebada mebada       4096 Jan 18 01:14 .mozilla