当我在 Windows 的 cmd 中运行时tree /a /f > output.txt
,我得到了一个格式良好的目录结构。但目录列表没有任何特定的顺序。如何让树按字母顺序对文件夹和文件进行排序?
注意:我需要将输出格式化为层次结构,因此使用dir
可能不够。我可能需要使用tree
。
摘自 tree 的输出
+---HCM Documents
| +---Interfaces
| +---Process Flows
| +---Workshops
| | \---Overviews
| +---Approvals
| +---Requirements
| \---Misc
+---Testing Documents
+---Communications
| +---Statuses
| +---Meeting Minutes
+---Finance Documents
| +---Taxes
| +---General Ledger
| +---Business
| +---Process Flows
| +---Purchases
| \---Workshops
+---Unfiled
+---Infrastructure Documents
+---Financials
| +---Issue and Risk Log
| +---Timelines
| +---Templates
| \---Decisions Log
请注意,文件夹名称不是按字母顺序排列的。它们也不是按修改日期或大小或我能想到的任何其他顺序排列的。
dir
此外,这是我在运行时未指定排序顺序时获得的默认顺序。
这些文档是通过网络驱动器访问的,但我不明白这有什么区别。(虽然当我在本地文件夹上运行树时,它们似乎确实按字母顺序排列。也许这实际上是一个因素?)
答案1
Tree
是一个非常简单的程序,它循环遍历所有目录(如果指定则遍历文件)。它不进行缓冲。您可以看到这一点,因为它直接在屏幕上构建目录树(如果输出未重定向)。对于许多目录,此过程很慢,并且输出立即开始。
由于tree
无法一次读取所有目录,因此无法进行排序。因此,它依赖于文件系统来按顺序显示目录。如果文件系统不这样做,tree
则不会进行排序。
如果您想要一个有序列表,您将必须使用一个可以一次读取所有目录和文件然后呈现有序树状视图的实用程序。
答案2
我知道有两种选择:
- 总指挥官并调用它的树AltF10。然后您可以在 c:\Users\your_username\AppData\Local\GHISLER\ 中的 treeinfoC.wc 文件中找到排序良好的树。您可能需要删除括号 [],然后使用某些编辑器及其正则表达式替换功能。
使用控制台(cmd.exe)命令:
dir /b /s /ad c:\
可以通过以下方式重定向到文件:
dir /b /s /ad c:\ > c:\all_c_drive_folders.txt
答案3
这是我所做的:为您的 TEMP 目录创建树结构:
cd /d %TEMP%
md TREEDIR
cd TREEDIR
然后将目录结构复制到源
xcopy /t /e SOURCEDIR .
现在树将给你一个漂亮的按 alpha 排序的树输出。