我有很多包含数据的子目录,我想要一个简短的列表,列出我所拥有的作业(子目录).我对以下命令不满意.
$ ls H2*
H2a:
energy.dat overlap.dat
norm.dat zdip.dat ...
(much more)
H2b:
energy.dat overlap.dat
norm.dat zdip.dat ...
(much more)
Run Code Online (Sandbox Code Playgroud)
这种不必要的混乱破坏了通配符的目的(限制输出).如何将输出限制在一个深度?我想看看以下输出
H2a/ H2b/ H2z/
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助,尼克
har*_*rpo 37
试试这个
ls -d H2*/
Run Code Online (Sandbox Code Playgroud)
该-d
选项应该列出"仅限目录",但它本身只是列表
.
Run Code Online (Sandbox Code Playgroud)
我个人觉得有点奇怪.需要通配符才能获得实际的目录列表.
更新:正如@Philipp所指出的那样,你可以更简洁地做到这一点,而不是说bash
echo H2*/
Run Code Online (Sandbox Code Playgroud)
不同之处在于ls
将在单独的行上打印项目,这通常用于管道到其他功能.
ajr*_*eal 15
你应该考虑使用find,比如
find . -type d -maxdepth 1 -name "H2*"
Run Code Online (Sandbox Code Playgroud)
Phi*_*ipp 11
echo H2*
Run Code Online (Sandbox Code Playgroud)
这是扩展的Bash,所以你甚至不需要ls
.
如果您同时拥有文件和目录H2
,则可以附加斜杠以将glob限制为目录:
echo H2*/
Run Code Online (Sandbox Code Playgroud)