3.15 只列出目录的其他方法
尽管看起来只列出目录是一件挺简单的任务,很多人却未必能够办到。我经常会碰到这种情况,甚至有些编写shell脚本水平不错的用户也会被这个问题难住。这则攻略很值得学习,因为它介绍了多种只列出目录的方法与技巧。
3.15.1 预备知识
有很多种方法可以只列出目录。当你向其他人询问这些技术的时候,你得到的第一个答案可能是dir
。但是,这是错的。dir
命令只不过是另一个类似于ls
且比ls
选项更少的命令。让我们来看看如何只列出目录。
3.15.2 实战演练
有4种方法可以列出当前路径下的目录,分别列出如下。
$ ls -d */
只有上面这种结合 -d
的用法才能够只打印出目录。
$ ls -F | grep "/$"
当使用 -F
时,所有的输出项都会添加上一个代表文件类型的字符,如@
、*
、|
等。对于目录项,添加的是 /
字符。我们用grep
只过滤那些以 /$
作为行尾标记的输出项。
$ ls -l | grep "^d"
ls -l
输出的每一行的第一个字符表示文件类型。目录的文件类型字符是"d"
。因此我们用grep
过滤以"d"
起始的行。^
是行首标记。
$ find . -type d -maxdepth 1 -print
find
命令可以指定type
的参数为目录并将maxdepth
设置成1
,这是因为我们不需要向下搜索。