文件系统的逻辑结构(包括符号链接目标)可以用单个轻量级文件(非二进制文件)表示吗?


13

多年以来,在使用多个SQL和NoSQL数据库后,我觉得确保以数据为中心的个人应用程序中的可移植性的最佳方法是完全避免使用所有真正的数据库。我认为文件系统是一种精美的数据库范例,可移植,可人工阅读,因此具有足够的寿命,足以满足我正在编写的个人应用程序的类型。这就像一个图数据库,它强制执行树结构(适合分区),并带有符号链接来表示多对一关系。

有没有办法将整个文件系统拓扑导出为单个文件?find命令的输出很有希望,但是没有标准化的方法可以导出表示符号链接指向的数据。我不想自己选择find输出格式,例如:

/home/me/photos/beach/me_and_my_dog.jpg -> /home/me/photos/beach/1.jpg

如果以前有人完成过建立文件系统拓扑导出格式的工作。

另一个候选对象是JSON文件:

home : [{
    me : [{
        photos : [{
            beach : [{
                1.jpg,
                { me_and_my_dog.jpg : ./1.jpg }
            }]
        }]
    }
}]

但是同样有多种表示文件类型的方式,我想知道是否有人已经完成了建立标准的工作。

请注意,我不希望导出文件的内容-这会使导出的内容超出所需的范围。

Answers:


14

tree命令的输出似乎显示您要查找的内容:

.
└── photos
    └── beach
        ├── 1.jpg -> me_and_dog.jpg
        └── me_and_dog.jpg

较新版本的命令甚至可以输出为HTML,XML或JSON。

XML输出:

<?xml version="1.0" encoding="UTF-8"?>
<tree>
  <directory name=".">
    <directory name="photos">
      <directory name="beach">
        <link name="1.jpg" target="me_and_dog.jpg"></link>
        <file name="me_and_dog.jpg"></file>
      </directory>
    </directory>
  </directory>
  <report>
    <directories>2</directories>
    <files>2</files>
  </report>
</tree>

2
哇,那正是我想要的。我知道该tree命令(很棒),但是我没有意识到它现在支持可解析的格式。
Sridhar Sarnobat 2014年

1
注意:此tree命令是Linux版本。Windows版本仍然仅输出简单的“树”。
科尔·约翰逊

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.