(1)如何过滤出已知当前目录(iantest)下的所有一级目录(提示:不包含当前目录下面目录的子目录,即只能是一级目录)?
解答:
- 根据颜色区分文件和目录(蓝色)。
- ls -l结果中以d开头的就是目录。
- 通过给目录加标识,然后通过过滤标识就过滤出目录(ls -F或ls -p)。
- 通过find直接查找指定类型的文件(-d 就是目录)。
实验数据:
d开头的是目录
方法二:
基础正则表达式字符’^’:表示以…开头,如^ian,以ian开头的那一行。
# 过滤出以d开头的那行
[root@ianLinux iantest]# ls -l|grep "^d"
方法三:
①ls 的-F参数给不同文件类型结尾加标识。
-F, --classify
append indicator (one of */=>@|) to entries
-p, --indicator-style=slash
append / indicator to directories #只是在目录后面加/
ls -F /dev
②基础正则表达式字符’$’:表示以…结尾,如ian\$,表示以ian结尾的那一行。
# 过滤包含/的
[root@ianLinux iantest]# ls -lF/grep "/"
# 过滤以/结尾的
[root@ianLinux iantest]# ls -lF|grep "/$"
方法四:
直接[root@ianLinux iantest]# find /data/iantest/ -type d
会查找到二级目录
find的-maxdepth参数可以控制查找深度
[root@ianLinux iantest]# find /data/iantest/ -maxdepth 1 -type d
‘! ‘非的使用,去除查找结果中的当前目录/data/iantest
[root@ianLinux iantest]# find /data/iantest/ -maxdepth 1 -type d ! -name "iantest"
方法五:
[root@ianLinux iantest]# tree -Ld 1
#tree 显示目录树结构 -L 层数 -d 目录
方法六:
sed的过滤: sed -n ‘/过滤的内容/处理的命令’ 文件
[root@ianLinux iantest]# ls -l|sed -n '/^d/p'
方法七:
awk的过滤:
[root@ianLinux iantest]# ls -l|awk '/^d/'