19

在 Linux 中,我想找出所有文件夹/子文件夹名称并重定向到文本文件

我试过 ls -alR > list.txt了,但它提供了所有文件+文件夹

4

3 回答 3

53

您可以使用find

find . -type d > output.txt

或者tree

tree -d > output.txt

tree, 如果您的系统上没有安装。

如果您正在使用ubuntu

sudo apt-get install tree

如果您正在使用mac os.

brew install tree
于 2013-02-12T07:42:58.200 回答
9
find . -type d > list.txt

将列出当前路径下的所有目录和子目录。如果要列出当前路径以外的路径下的所有目录,请将 更改.为该其他路径。

如果要排除某些目录,可以用否定条件过滤掉它们:

find . -type d ! -name "~snapshot" > list.txt
于 2013-02-12T07:42:50.380 回答
3

除了find在其他答案中列出的那样,更好的外壳允许递归 glob 和过滤 glob 匹配,zsh例如......

ls -lad **/*(/)

...列出所有目录,同时保留您想要的所有“-l”详细信息,否则您需要使用类似...的东西重新创建这些详细信息

find . -type d -exec ls -ld {} \;

(不像其他答案建议的那么容易)

find 的好处是它更独立于 shell - 更便携,甚至对于system()来自 C/C++ 程序等的调用也是如此。

于 2013-02-12T08:53:44.703 回答