在Linux中使用ls仅显示目录

问题描述 投票:1回答:1

我熟悉Linux(Debian 9)。然而,我设法让自己与ls命令手册混淆。我做了以下微不足道的测试设置:

meouser:~/triv_dir$ ls -laR
.:
total 24
drwxr-xr-x  4 meouser meouser 4096 Mar 27 15:42 .
drwxr-xr-x 19 meouser meouser 4096 Mar 27 15:41 ..
drwxr-xr-x  4 meouser meouser 4096 Mar 27 15:55 a
drwxr-xr-x  2 meouser meouser 4096 Mar 27 15:42 b
-rw-r--r--  1 meouser meouser    6 Mar 27 15:44 c
-rw-r--r--  1 meouser meouser    6 Mar 27 15:44 d

./a:
total 24
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:55 .
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:42 ..
-rw-r--r-- 1 meouser meouser    4 Mar 27 15:50 aa
-rw-r--r-- 1 meouser meouser    4 Mar 27 15:50 ab
drwxr-xr-x 2 meouser meouser 4096 Mar 27 15:55 a_sub_1
drwxr-xr-x 2 meouser meouser 4096 Mar 27 15:55 a_sub_2

./a/a_sub_1:
total 12
drwxr-xr-x 2 meouser meouser 4096 Mar 27 15:55 .
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:55 ..
-rw-r--r-- 1 meouser meouser    4 Mar 27 15:55 aaa

./a/a_sub_2:
total 8
drwxr-xr-x 2 meouser meouser 4096 Mar 27 15:55 .
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:55 ..

./b:
total 16
drwxr-xr-x 2 meouser meouser 4096 Mar 27 15:42 .
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:42 ..
-rw-r--r-- 1 meouser meouser    4 Mar 27 15:50 ba
-rw-r--r-- 1 meouser meouser    4 Mar 27 15:50 bb

我想查看所有目录名称及其子目录,但不是文件名。也就是说,我想要像ls --insert-options-here这样的输出,以便输出是上面的这个子集:

.:
total 24
drwxr-xr-x  4 meouser meouser 4096 Mar 27 15:42 .
drwxr-xr-x 19 meouser meouser 4096 Mar 27 15:41 ..
drwxr-xr-x  4 meouser meouser 4096 Mar 27 15:55 a
drwxr-xr-x  2 meouser meouser 4096 Mar 27 15:42 b

./a:
total 24
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:55 .
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:42 ..
drwxr-xr-x 2 meouser meouser 4096 Mar 27 15:55 a_sub_1
drwxr-xr-x 2 meouser meouser 4096 Mar 27 15:55 a_sub_2

根据ls手册应该由ls -ldR实现。

meouser:~/triv_dir$ man ls

   -a, --all
          do not ignore entries starting with .

   -d, --directory
          list directories themselves, not their contents

   -l     use a long listing format

   -R, --recursive
          list subdirectories recursively

但事实恰恰相反:只显示了'.'

meouser:~/triv_dir$ ls -ldR
drwxr-xr-x 4 meouser meouser 4096 Mar 27 15:42 .

我在手册中遗漏了什么?

我从https://stackoverflow.com/a/29277454/11199684注意到这可以通过find . -maxdepth 2 -type d -print实现,这令人印象深刻,但它提供的信息少于上面的ls输出。此外,我可能事先不知道正确的maxdepth?最重要的是,为了满足未来的需求,我实际上有兴趣从手册中自学。建议表示赞赏。

linux ls manual
1个回答
2
投票

-d选项适用于作为输入的[FILE],在您的情况下,由于没有给出,您将回退到默认值:当前目录。递归不适用,因为没有返回目录。

要使用ls命令获得与find相同的输出,您可以将它们组合在一起:

find . -type d -exec ls -ld {} \;
© www.soinside.com 2019 - 2024. All rights reserved.