在Linux中,我想找出所有文件夹/子文件夹的名称并将其重定向到文本文件。
我尝试了
我尝试了
ls -alR > list.txt
,但它会给出所有文件和文件夹。你可以使用find
find . -type d > output.txt
或者tree
tree -d > output.txt
tree
,如果您的系统上没有安装。
如果您正在使用Ubuntu
sudo apt-get install tree
如果您正在使用 mac os
。
brew install tree
find . -type d | sort > output.txt
。 - Adem Öztaşbrew
不是标准的工具;您需要单独安装它。 - tripleeefind . -type d > list.txt
会列出当前路径下的所有目录和子目录。如果您想列出除当前路径之外的其他路径下的所有目录,请将 .
更改为该其他路径。
如果您想排除某些目录,则可以使用负条件进行过滤:
find . -type d ! -name "~snapshot" > list.txt
find . -type d ! -name "~snapshot" > list.txt
- Amber除了其他答案中列出的 find
外,更好的 shell 还允许递归的 glob 和过滤 glob 匹配项,因此在 zsh
中,例如...
ls -lad **/*(/)
find . -type d -exec ls -ld {} \;
(并不像其他答案所建议的那样容易)
find 命令的好处在于它更独立于 shell - 更加可移植,即使是从 C/C++ 程序中进行 system()
调用等情况也适用。
setopt EXTENDED_GLOB
,然后 ls -lad **/*~**/~snapshot(/)
。详情请参阅man zshall
/“x〜y(需要设置EXTENDED_GLOB)。匹配与模式x匹配但不与y匹配的任何内容。[...]”。(还有“^x(需要设置EXTENDED_GLOB)。匹配除模式x之外的任何内容。[稍微不同语法及示例的进一步解释]”) - Tony Delroy
find
命令。find . -type d
- lit