(所述方法是在当前目录下,如在其他目录,要注意查找目录的表达)
在目录中,一般存放着普通文件及目录文件。
可用ls查看目录下的所有文件
如果我们仅仅希望查询目录下的子目录文件,不需要出现普通文件,如何操作呢?
下面提供6种方法,供参考。
1.ls -d */
我们知道,加-d选项,是仅列出目录,而不列出目录下的文件,而参数 */ 是指当前目录中的所有内容
*通配符,代表多个字符,所有的意思;?通配符,代表一个字符
此处的参数不能写. 、./ 、*等
2.ls -F | grep /$
加-F选项,是在目录文件后面添加标记/。再搜索此标记时,就仅能看到目录
grep 主要功能是搜索字符串,是处理文本时的重要命令,主要按行处理文件
grep与sed和awk并称为linux三剑客。如配合正则表达式,功能将十分强大
/$ 是正则表达式,表示以/结尾的行;^d表示以d开头的行
3.ll |grep ^d
ll是ls -l的别名(执行alias命令,可以看到全部有别名的命令)
ll列表显示目录下的文件,而以d开头的文件正是目录文件
其他文件类型有:
– 普通文件
b 块设备文件
c 字符设备文件
l 链接文件
p 管道文件
s 套接字文件
4.stat ./* | grep -B 1 “directory”
stat命令是详细列出文件信息。在目录中的文件很多,搜索”directory”可只显示目录
grep的-B 1选项是指显示
符合条件的行及其之前的行,
”B”
有
before
之意
,
数字1指显示前面的1行
与-B类似的还有:
-A n 显示结果行的后n行,“A有after之意”
-C n 显示结果行的前后n行,”C是context之意,上下文。也可以通过center中间、中部 帮助记忆命令选项”
(ll
命令执行的结果,正是系统调用stat
命令,再按一定格式输出的结果。查询ls
内核源代码,可以进一步理解stat
命令)
(系统语言为中文时,可搜索”目录”)
5.find . -maxdepth 1 -type d | grep -v ‘^\./\.’
-maxdepth 1 指定搜索的目录层级,仅1级
find后面的点代表在当前目录下查询,可用路径替代,-type d表示查询文件的类型为 d(目录)
通过grep过滤掉隐藏文件(命令中的两个右斜杠是转义,即点代表点符号,而不是匹配任意单个字符)
grep -v 代表查询结果取反
查询结果中的第一行:./ 代表查询的哪一个目录(查询当前目录时,也可以用./表示)
后面的几行才是查询结果
6.tree -L 1 -d
tree命令显示目录的层次结构,没有选项时显示所有文件及层次
选项-L 1仅显示一级(L是layer 的简写,表示层,分层)
选项-d 仅显示目录
不指定tree命令参数,默认是显示当前目录的文件结构