Linux
如何檢查文件系統的格式
我想在 bash 腳本中檢查目錄是什麼文件系統類型。
這個想法有點像
if [path] is on a [filesystem] filesystem then filesystem specific command end if
使用
df
. 您可以向它傳遞一個路徑,它會為您提供該路徑的文件系統資訊。如果您需要文件系統類型,請使用-T
開關,如下所示:$ df -T test Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda2 ext4 182634676 32337180 141020160 19% /home
要提取文件系統類型,您可以對其進行解析(如果設備部分太長,請使用
-P
開關避免斷行):df
$ df -PT test | awk 'NR==2 {print $2}' ext4
if
因此,您可以在這樣的構造中使用該值:if [ "$(df -PT "$path" | awk 'NR==2 {print $2}')" = "ext4" ] ; then it is an ext4 filesystem fi
請注意,設備列可以包含空格(但很少見),在這種情況下解析將失敗。
在安裝了 GNU stat 命令的系統上(與任何標準 Linux 發行版一樣),您可以獲取給定文件的 fs 類型,而無需使用以下
stat
命令進行任何解析:stat -f -c %T filename
-f
告訴stat
提供有關文件系統而不是文件的資訊,並將-c %T
輸出格式設置為僅包含人類可讀的文件系統類型 (%T
)。因此,您可以將其(在 bash 中)用作:
if [[ $(stat -f -c %T filename) == ext4 ]]; then # ext4 specific command fi
man stat
將提供更多資訊。