将Unix目录内容打印为普通文本文件

时间:2015-04-10 10:28:16

标签: c linux shell unix operating-system

我很好奇unix系统是如何工作的,现在我对作为文件集合的目录感兴趣,特别是对文件名和索引(数字)两个项目的集合到该文件的i-node表我想知道是否有任何黑客打印目录作为普通文本文件来查看目录内容...

任何想法?

3 个答案:

答案 0 :(得分:1)

在较旧的* nix系统上,您可以在目录上调用VI并查看目录文件的内容。也许还在。当然,这只会加载二进制乱码,这里有可识别的字符串,并且不是很有用。

所以是的,目录是二进制的。您可以尝试打开一个目录作为读取文件以读取其内容,但解析它们的最佳解决方案是使用getdents(这是已经提到的readdir的原语,readdir跳过未使用的inode和填充字节)。

这是一个非常小的抽象层(例如文件系统类型!),对于* nix本机文件系统非常接近磁盘上的数据。简单地以可读格式转储记录字段将为您提供一个很好的表示。

某些EXT * fs工具可能已经准备好使用这些功能,我建议你研究一下,最明显的是 debugfs

答案 1 :(得分:0)

stat命令可能正是您要查找的内容。

e.g。

$ stat .
  File: ‘.’
  Size: 0               Blocks: 40         IO Block: 65536  directory
Device: 177383d6h/393446358d    Inode: 562949953432553  Links: 1
Access: (0775/drwxrwxr-x)  Uid: (   18/  SYSTEM)   Gid: (   18/  SYSTEM)
Access: 2015-04-08 16:27:53.211425700 +0100
Modify: 2015-04-08 16:27:53.211425700 +0100
Change: 2015-04-08 16:27:53.211425700 +0100
 Birth: 2011-01-15 06:23:35.436641100 +0000

答案 2 :(得分:-3)

您可以使用

ls /path/to/directory > file.txt

还有一个树实用程序可以打印出一个视觉上更具吸引力的目录结构表示。