【问题标题】:List details of all directories and sub-directories only仅列出所有目录和子目录的详细信息
【发布时间】:2021-06-23 12:48:55
【问题描述】:

使用以下作品显示当前目录的详细信息。

> ls -ld *

使用以下作品也可以显示当前位置和子目录中所有目录和文件的详细信息。

> ls -lR *

但是如果我只想查看当前目录和子目录的详细信息,以下是行不通的。

> ls -lRd *

为什么 -lR 和 -ld 都有效,但 -lRd 的组合无效?

有没有简单的方法来获取这些信息?

【问题讨论】:

  • 我猜你正在寻找find . -exec ls -ld {} \;,但也许你想要find . -maxdepth 1 -exec ls -ld {} \;
  • find . -exec ls -ld {} + 可能是首选。

标签: linux recursion ls


【解决方案1】:

我怀疑你想要类似的东西:

find . -type d -exec ls -ld {} +

但是当您说ls -lr * 有效时,我并不清楚您的意思。使用* 只是扩展为当前目录中的所有名称,而-r 只是更改了打印的顺序。 ls -lrd * 只是列出了当前目录中所有条目的统计信息,并且没有显示任何子目录,因为您已使用 -d 限制了输出。

【讨论】:

  • 效果很好,谢谢。最初我试图仅列出目录 (-d) 的详细信息 (-l) 并以递归方式 (-r) 执行此操作,但猜想组合会受到限制?
  • -r 并不意味着“递归”。它以相反的顺序对名称进行排序。
  • 我的错。我的意思是输入 -R,而不是 -r。
【解决方案2】:

你也可以这样做:

$ shopt -s globstar
$ ls -ld **/

在您的 rc 文件中默认设置选项 globstar 并没有什么坏处。 extglob 的帐户相同。 globstar 启用递归 glob,**extglob 启用其他各种有用的 glob 表达式。

【讨论】:

    猜你喜欢
    • 2011-03-27
    • 2012-10-15
    • 2012-11-14
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多