Comment obtenir l'UUID du système de fichiers avec un chemin d'accès?

9

On me remet le chemin d'un répertoire ou d'un fichier.

Quel script utilitaire / shell me donnera de manière fiable l'UUID du système de fichiers sur lequel se trouve ce répertoire / fichier?

Par UUID du système de fichiers, je veux dire l' UUID=...entrée comme indiqué par exempleblkid

J'utilise Redhat Linux.

(quelqu'un a suggéré que je devrais poser cette question ici à unix.stackexchange.com, donc je l'ai déplacé du stackexchange.com d'origine)

linfan
la source
3
Voir unix.stackexchange.com/questions/11311/… sur la façon d'obtenir le système de fichiers, après quoi vous pouvez exécuter blkid.
muru
Notez que tous les systèmes de fichiers n'auront pas d'UUID; blkid ne vous donnera pas un UUID par exemple. pour les montages NFS.
olivier

Réponses:

8

Une option est stat+ findmntcombo:

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

Ici, -ndésactive l'en-tête et -o UUIDimprime uniquement la valeur UUID. Option -c '%m'de statest présent à la sortie que point de montage chemin donné.

jimmij
la source
2
Pas besoin de stat:findmnt -no uuid -T "$path"
don_crissti
3

Vous pouvez utiliser df pour trouver le point de montage du fichier, puis appliquer le résultat à blkid à l'UUID. Vous devez exécuter (au moins) blkid en tant que root pour que cela fonctionne:

FILE_OR_DIR="$PWD"
blkid -s UUID -o value $( df "$FILE_OR_DIR" )
roaima
la source
Mieux serait -o export, car cela imprime la sortie du formulaire UUID=....
muru
@muru, il n'était pas clair pour moi si seulement l'UUID était requis ( -o value) ou une UUID="value"expression de type ( -o export). J'ai choisi la valeur.
roaima