Linux

如何檢查文件系統的格式

  • September 14, 2015

我想在 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將提供更多資訊。

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