Linux

在 Linux/UNIX 文件系統中查看目錄內容的簡單方法

  • July 17, 2015

過去,我了解到在 Linux/UNIX 文件系統中,目錄只是文件,其中包含目錄內文件的文件名和 inode 編號。

有沒有一種簡單的方法來查看目錄的內容?我的意思是文件名和索引節點的儲存/組織方式。

不是在尋找lsfind或類似的東西。我也不想看到目錄中文件的內容。我想看看目錄的實現。如果每個目錄都只是一個包含一些內容的文本文件,那麼可能存在一種查看該文本文件內容的簡單方法。

在 Linux 的 bash 中,無法執行cat folder. 輸出只是Is a directory.

更新問題如何檢查 unix/linux 文件的目錄結構資訊?解決了同樣的問題,但它沒有像mjturner那樣有用的解決方案。

顯示文件系統的 inode 詳細資訊的工具將是特定於文件系統的。對於ext2, ext3,ext4文件系統(最常見的 Linux 文件系統),您可以使用debugfs, 對於 XFS xfs_db, 對於 ZFS zdb。使用該命令btrfs可以獲得一些資訊。btrfs

例如,要探索文件系統上的ext4目錄(在本例/中是dev/sda1):

# ls src
Animation.js    Map.js        MarkerCluster.js    ScriptsUtil.js
Directions.js   MapTypeId.js  markerclusterer.js  TravelMode.js
library.js      MapUtils.js   Polygon.js          UnitSystem.js
loadScripts.js  Marker.js     Polyline.js         Waypoint.js

# ls -lid src
664488 drwxrwxrwx 2 vagrant vagrant 4096 Jul 15 13:24 src

# debugfs /dev/sda1
debugfs: imap <664488>
Inode 664488 is part of block group 81
       located at block 2622042, offset 0x0700
debugfs: dump src src.out
debugfs: quit

# od -c src.out
0000000 250   #  \n  \0  \f  \0 001 002   .  \0  \0  \0 204 030  \n  \0
0000020  \f  \0 002 002   .   .  \0  \0 251   #  \n  \0 024  \0  \f 001
0000040   A   n   i   m   a   t   i   o   n   .   j   s 252   #  \n  \0
0000060 030  \0  \r 001   D   i   r   e   c   t   i   o   n   s   .   j
0000100   s  \0  \0  \0 253   #  \n  \0 024  \0  \n 001   l   i   b   r
0000120   a   r   y   .   j   s  \0  \0 254   #  \n  \0 030  \0 016 001
0000140   l   o   a   d   S   c   r   i   p   t   s   .   j   s  \0  \0
0000160 255   #  \n  \0 020  \0 006 001   M   a   p   .   j   s  \0  \0
0000200 256   #  \n  \0 024  \0  \f 001   M   a   p   T   y   p   e   I
0000220   d   .   j   s 257   #  \n  \0 024  \0  \v 001   M   a   p   U
0000240   t   i   l   s   .   j   s  \0 260   #  \n  \0 024  \0  \t 001
0000260   M   a   r   k   e   r   .   j   s  \0  \0  \0 261   #  \n  \0
0000300 030  \0 020 001   M   a   r   k   e   r   C   l   u   s   t   e
0000320   r   .   j   s 262   #  \n  \0 034  \0 022 001   m   a   r   k
0000340   e   r   c   l   u   s   t   e   r   e   r   .   j   s  \0  \0
0000360 263   #  \n  \0 024  \0  \n 001   P   o   l   y   g   o   n   .
0000400   j   s  \0  \0 264   #  \n  \0 024  \0  \v 001   P   o   l   y
0000420   l   i   n   e   .   j   s  \0 265   #  \n  \0 030  \0 016 001
0000440   S   c   r   i   p   t   s   U   t   i   l   .   j   s  \0  \0
0000460 266   #  \n  \0 030  \0  \r 001   T   r   a   v   e   l   M   o
0000500   d   e   .   j   s  \0  \0  \0 267   #  \n  \0 030  \0  \r 001
0000520   U   n   i   t   S   y   s   t   e   m   .   j   s  \0  \0  \0
0000540 270   #  \n  \0 240 016  \v 001   W   a   y   p   o   i   n   t
0000560   .   j   s  \0 305 031  \n  \0 214 016 022 001   .   U   n   i
0000600   t   S   y   s   t   e   m   .   j   s   .   s   w   p  \0  \0
0000620 312 031  \n  \0   p 016 022 001   .   U   n   i   t   S   y   s
0000640   t   e   m   .   j   s   .   s   w   x  \0  \0  \0  \0  \0  \0
0000660  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0

在上面,我們首先找到目錄src( 664488) 的 inode,然後將其內容轉儲到文件src.out中,然後使用od. 如您所見,該目錄(Animation.js等)中所有文件的內容都在轉儲中可見。

這只是一個開始 - 請參閱debugfs手冊頁或help在其中鍵入debugfs以獲取更多資訊。

如果您正在使用,您可以在核心文件ext4中找到有關目錄條目結構和佈局的更多資訊。

引用自:https://unix.stackexchange.com/questions/216644