Làm thế nào để có được UUID của hệ thống tập tin được cung cấp một đường dẫn?


9

Tôi đang trao một đường dẫn của một thư mục hoặc một tập tin.

Tập lệnh tiện ích / shell nào đáng tin cậy sẽ cung cấp cho tôi UUID của hệ thống tệp trên thư mục / tệp này nằm ở đâu?

Theo UUID của hệ thống tệp, ý tôi là UUID=...mục nhập như được hiển thị bởi vdblkid

Tôi đang sử dụng Redhat Linux.

(ai đó đề nghị tôi nên hỏi điều này ở đây tại unix.stackexchange.com, vì vậy tôi đã chuyển nó từ stackexchange.com ban đầu)


3
Xem unix.stackexchange.com/questions/11311/ trên cách nhận hệ thống tập tin, theo đó bạn có thể chạy blkid.
muru

Lưu ý rằng không phải tất cả các hệ thống tệp sẽ có UUID; Blkid sẽ không cung cấp cho bạn một UUID, vd. cho các gắn kết NFS.
oliver

Câu trả lời:


8

Một tùy chọn là stat+ findmntcombo:

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

Ở đây -nvô hiệu hóa tiêu đề và -o UUIDchỉ in giá trị UUID. Lựa chọn -c '%m'của statcó mặt để đầu ra chỉ mountpoint của con đường đã chọn.


2
Không cần stat:findmnt -no uuid -T "$path"
don_crissti

3

Bạn có thể sử dụng df để tìm điểm gắn kết của tệp và sau đó áp dụng kết quả cho blkid cho UUID. Bạn cần chạy (ít nhất) blkid làm root để làm việc này:

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

Tốt hơn là -o export, vì đó in đầu ra của mẫu UUID=....
muru

@muru tôi không rõ liệu UUID được yêu cầu ( -o value) hay UUID="value"biểu thức kiểu ( -o export). Tôi đã chọn giá trị.
roaima
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.