Linux
在 Linux/UNIX 文件系統中查看目錄內容的簡單方法
過去,我了解到在 Linux/UNIX 文件系統中,目錄只是文件,其中包含目錄內文件的文件名和 inode 編號。
有沒有一種簡單的方法來查看目錄的內容?我的意思是文件名和索引節點的儲存/組織方式。
我不是在尋找
ls
,find
或類似的東西。我也不想看到目錄中文件的內容。我想看看目錄的實現。如果每個目錄都只是一個包含一些內容的文本文件,那麼可能存在一種查看該文本文件內容的簡單方法。在 Linux 的 bash 中,無法執行
cat folder
. 輸出只是Is a directory
.更新問題如何檢查 unix/linux 文件的目錄結構資訊?解決了同樣的問題,但它沒有像mjturner那樣有用的解決方案。
顯示文件系統的 inode 詳細資訊的工具將是特定於文件系統的。對於
ext2
,ext3
,ext4
文件系統(最常見的 Linux 文件系統),您可以使用debugfs
, 對於 XFSxfs_db
, 對於 ZFSzdb
。使用該命令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
中找到有關目錄條目結構和佈局的更多資訊。