パスを指定してファイルシステムのUUIDを取得するにはどうすればよいですか?


9

ディレクトリまたはファイルのパスを渡されます。

このディレクトリ/ファイルが配置されているファイルシステムのUUIDを確実に提供するユーティリティ/シェルスクリプトはどれですか。

ファイルシステムのUUIDとはUUID=...、たとえばblkid

Redhat Linuxを使用しています。

(誰かがここunix.stackexchange.comでこれを尋ねるべきだと誰かが提案したので、元のstackexchange.comから移動しました)


3
ファイルシステムを取得する方法については、unix.stackexchange.com / questions / 11311 /…を参照してくださいblkid。その後、実行できます。
muru、2015年

すべてのファイルシステムがUUIDを持つわけではないことに注意してください。blkidはUUIDを提供しません。NFSマウント用。
オリバー、2015年

回答:


8

1つのオプションはstat+ findmntコンボです。

findmnt -n -o UUID $(stat -c '%m' "$path")

ここで-nはヘッダーを無効にし、-o UUIDUUID値のみを出力します。のオプション-c '%m'stat、指定されたパスのマウントポイントのみを出力するために存在します。


2
必要はありませんstatfindmnt -no uuid -T "$path"
don_crissti

3

dfを使用してファイルのマウントポイントを見つけ、その結果をblkidに適用してUUIDに適用できます。これを機能させるには、rootとして(少なくとも)blkidを実行する必要があります。

FILE_OR_DIR="$PWD"
blkid -s UUID -o value $( df "$FILE_OR_DIR" )

-o exportフォームの出力を出力するので、より良いでしょうUUID=...
muru

@muruでは、UUIDだけが必要なのか(-o value)、UUID="value"タイプ式(-o export)なのか、私にはわかりませんでした。私は価値を選びました。
roaima 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.