我有很多包含数据的子目录,我想要一个包含哪些作业(子目录)的简短列表。我对以下命令不满意。
$ ls H2*
H2a:
energy.dat overlap.dat
norm.dat zdip.dat ...
(much more)
H2b:
energy.dat overlap.dat
norm.dat zdip.dat ...
(much more)
这种不必要的混乱破坏了通配符的目的(限制输出)。如何将输出限制在一个深度?我想看看以下输出
H2a/ H2b/ H2z/
感谢您的帮助, 尼克
答案 0 :(得分:36)
试试这个
ls -d H2*/
-d
选项应该列出“仅限目录”,但本身只列出
.
我个人觉得有点奇怪。获取实际的目录列表需要使用通配符。
更新:正如@Philipp所指出的那样,你可以更简洁地做到这一点而不必留下bash说
echo H2*/
不同之处在于ls
会在不同的行上打印这些项目,这对于管理其他功能通常很有用。
答案 1 :(得分:15)
你应该考虑使用find,比如
find . -type d -maxdepth 1 -name "H2*"
答案 2 :(得分:11)
echo H2*
进行扩展的是Bash,所以你甚至不需要ls
。
如果您同时拥有以H2
开头的文件和目录,则可以附加斜杠以将glob限制为目录:
echo H2*/
答案 3 :(得分:3)
史蒂夫·贝克在http://mama.indstate.edu/users/ice/tree/使用tree
它填补了ls
中缺少的许多东西。
列出一层深的目录:
tree -adi -L 1 H2*
答案 4 :(得分:2)
也许这就是你要找的东西?
ls | grep H2*