Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用什么工具绘制文件树图_Bash_Shell_Filesystems_Diagram - Fatal编程技术网

Bash 使用什么工具绘制文件树图

Bash 使用什么工具绘制文件树图,bash,shell,filesystems,diagram,Bash,Shell,Filesystems,Diagram,给定一个文件树-一个包含目录的目录等,您将如何编写一个脚本来创建一个文件树图,作为一个图形文件,我可以将其嵌入到字处理器文档中。 我更喜欢矢量(SVG、EPS、EMF…)文件。 该工具必须在Windows上运行,但最好是跨平台运行。 该工具可以是商用的,但最好是免费的 更新2012-02-20。 该问题与一个文件子项目有关。我必须解释文件(特别是资源和配置文件)的存放位置。 我最终使用了dos树命令。我在屏幕上抓取了结果(对于短文件夹),对于长文件夹,我重定向到一个文本文件,然后对其进行编辑。例

给定一个文件树-一个包含目录的目录等,您将如何编写一个脚本来创建一个文件树图,作为一个图形文件,我可以将其嵌入到字处理器文档中。 我更喜欢矢量(SVG、EPS、EMF…)文件。 该工具必须在Windows上运行,但最好是跨平台运行。 该工具可以是商用的,但最好是免费的

更新2012-02-20。 该问题与一个文件子项目有关。我必须解释文件(特别是资源和配置文件)的存放位置。 我最终使用了dos树命令。我在屏幕上抓取了结果(对于短文件夹),对于长文件夹,我重定向到一个文本文件,然后对其进行编辑。例如,如果一个子文件夹包含20个类似类型的文件,而这些文件对我的观点并不重要,那么我只留下了两个,并用一个替换了其余的。。。线路。然后我再次将文件打印到控制台,屏幕抓取了它。 在抓屏之前,我必须将前景色修改为黑色,将背景色修改为白色,以便在打印的文档中看起来更好并节省墨水

令人惊讶的是,没有更好的工具。如果我有时间,我会编写一个Visio扩展,或者是生成SVG的命令行。SVG不符合HTML5标准,甚至可以毫无痛苦地包含到在线文档中

2017年10月17日更新。
很抱歉,此问题因不属于SO而被删除。所以我重新措辞了。我需要一个脚本,而不是所见即所得工具。所以任何脚本语言或库都可以。因此,这是一个代码编写问题,我相信属于So

为什么不在Windows文件系统上创建一个文件结构,并用所需的名称填充它,然后使用HyperSnap(或无处不在的Alt-PrtScr)之类的屏幕抓取器来捕获资源管理器窗口的一部分呢

我在“演示”一个具有可折叠部分的互联网应用程序时就是这样做的,我只需要创建看起来像我想要的条目的文件

HyperSnap至少提供了JPG(可能是其他的,但我从来没有费心去调查)

或者您可以从浏览器中截取图标+/-,并在MS Word Draw中使用它们来绘制图片,但我一直无法让MS Word Draw正常工作。

-从网页:

Graphviz布局程序以简单的文本语言对图形进行描述,并以多种有用的格式制作图表,如用于网页的图像和SVG,用于PDF或其他文档的Postscript;或显示在交互式图形浏览器中。(Graphviz还支持GXL,一种XML方言。)

这是我发现的创建各种方框和线条图的最简单、最有效的工具。我有并使用了Visio和OmniGraffle,但总有人想“再做一次调整”


编写代码来生成Graphiz使用的“点文件”格式也很容易,因此自动化的图表生成也很容易实现。

从MS-DOS
命令复制和粘贴也可能适用于您。示例:

C:\Foobar>tree
C:.
├───FooScripts
├───barconfig
├───Baz
│   ├───BadBaz
│   └───Drop
...
树/F

C:\Foobar>tree
C:.
├───FooScripts
│    foo.sh
├───barconfig
│    bar.xml
├───Baz
│   ├───BadBaz
│   │    badbaz.xml
│   └───Drop
...
树/A

C:\Foobar>tree /A
C:.
+---FooScripts
+---barconfig
+---Baz
¦   +---BadBaz
¦   \---Drop
...
C:\Foobar>tree /A
C:.
+---FooScripts
¦    foo.sh
+---barconfig
¦    bar.xml
+---Baz
¦   +---BadBaz
¦   ¦    badbaz.xml
¦   \---Drop
...
树/F/A

C:\Foobar>tree /A
C:.
+---FooScripts
+---barconfig
+---Baz
¦   +---BadBaz
¦   \---Drop
...
C:\Foobar>tree /A
C:.
+---FooScripts
¦    foo.sh
+---barconfig
¦    bar.xml
+---Baz
¦   +---BadBaz
¦   ¦    badbaz.xml
¦   \---Drop
...
语法[]
[
驱动器:
][
路径
][
/F
][
/A
]

drive:\path
-包含磁盘的驱动器和目录,用于显示目录结构,不列出文件

/F
-包括每个目录中的所有文件

/A
-将用于链接行的图形字符替换为ext字符,而不是图形字符
/a
用于不支持图形字符的代码页,并将输出发送到不正确解释图形字符的打印机


使用Graphviz的建议很好:您可以生成点文件,它将完成测量字符串、布局等艰苦工作。此外,它还可以以多种格式输出图形,包括矢量格式

我在邮件列表中发现一个Perl程序正是这样做的,但我就是找不到它!我复制了示例点文件并对其进行了研究,因为我不太了解这种声明性语法,我想学习更多

问题:对于最新的Graphviz,我在原始图形和我(手工)编写的图形中都有错误(或者更确切地说,在生成最终图表时有警告)。一些搜索显示,此错误在旧版本中找到,在较新版本中消失。看起来它回来了

我仍然会给出这个文件,也许它可以作为某个人的起点,或者它已经足够满足您的需要(当然,您仍然需要生成它)


我将尝试另一个方向,使用Cairo,它也能够导出多种格式。这是更多的工作(计算位置/偏移量),但结构简单,不应该太难。

正如承诺的那样,这是我的开罗版本。我用Lua编写了脚本,使用lfs遍历目录。我喜欢这些小挑战,因为它们允许我探索我想挖掘一段时间的API…
lfs和LuaCairo都是跨平台的,所以它应该可以在其他系统上工作(在法国WinXP Pro SP3上测试)

当我在树上行走时,我制作了第一个版本的图形文件名。优点:无内存开销。不便之处:我必须事先指定图像大小,因此列表可能会被切断

所以我制作了这个版本,首先遍历目录树,将其存储在Lua表中。然后,知道文件的数量,创建适合的画布(至少垂直),并绘制名称。
您可以轻松地在PNG渲染和SVG渲染之间切换。后者的问题是:Cairo在低级别生成它,绘制字母,而不是使用SVG的文本功能。至少,即使在没有字体的系统上,它也能保证准确的渲染。但是文件