Bagaimana cara mendapatkan UUID dari sistem file yang diberikan path?

9

Saya diberi jalur direktori atau file.

Skrip utilitas / shell mana yang andal akan memberi saya UUID sistem file tempat direktori / file ini berada?

Dengan UUID sistem file yang saya maksud UUID=...entri seperti yang ditunjukkan oleh misalnyablkid

Saya menggunakan Redhat Linux.

(seseorang menyarankan agar saya menanyakan ini di unix.stackexchange.com, jadi saya memindahkannya dari stackexchange.com asli)

linfan
sumber
3
Lihat unix.stackexchange.com/questions/11311/... tentang cara mendapatkan sistem file, berikut ini yang dapat Anda jalankan blkid.
muru
Perhatikan bahwa tidak semua sistem file akan memiliki UUID; blkid tidak akan memberi Anda UUID misalnya. untuk NFS mounts.
oliver

Jawaban:

8

Salah satu opsi adalah stat+ findmntkombo:

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

Di sini -nmenonaktifkan header, dan -o UUIDhanya mencetak nilai UUID. Opsi -c '%m'dari stathadir untuk output hanya titik mount dari jalan yang diberikan.

jimmij
sumber
2
Tidak perlu untuk stat:findmnt -no uuid -T "$path"
don_crissti
3

Anda dapat menggunakan df untuk menemukan titik mount file, dan kemudian menerapkan hasilnya ke blkid ke UUID. Anda perlu menjalankan (setidaknya) blkid sebagai root agar ini berfungsi:

FILE_OR_DIR="$PWD"
blkid -s UUID -o value $( df "$FILE_OR_DIR" )
roaima
sumber
Lebih baik -o export, karena itu mencetak output formulir UUID=....
muru
@muru tidak jelas bagi saya apakah hanya diperlukan UUID ( -o value) atau UUID="value"jenis ekspresi ( -o export). Saya memilih nilai.
roaima