Shell 只列出目录的各种方法,用脚本只列出目录不是件容易事。本章介绍了多种只列出目录的方法。
预备知识
有很多种方法可以只列出目录。dir
类似于ls
,但选项更少。另外也可以使用ls
和find
来列出目录。
实战演练
可以依据下列方法列出当前路径下的目录。
(1) 使用ls -d
:
$ ls -d */
(2) 使用grep
结合ls -F
:
$ ls -F | grep "/$"
(3) 使用grep
结合ls -l
:
$ ls -l | grep "^d"
(4) 使用find
:
$ find . -type d -maxdepth 1 -print
工作原理
当使用ls
的-F
选项时,所有的输出项后面都会多出一个代表文件类型的字符,如@
、*
、|
等。目录对应的是/
字符。我们用grep
只过滤那些行尾标记为/$
的输出项。
ls –l
输出的每一行的首字符表示文件类型。目录的文件类型字符是d
。因此我们用grep
过滤以d
起始的行。^
是行首标记。
使用find
命令的时候可以指定-type
的参数为d
并将maxdepth
设置成1,这是因为我们不需要继续向下搜索子目录。