¿Cómo obtener el UUID del sistema de archivos dada una ruta?


9

Me entregan una ruta de un directorio o un archivo.

¿Qué utilidad / script de shell me dará de manera confiable el UUID del sistema de archivos en el que se encuentra este directorio / archivo?

Por UUID del sistema de archivos me refiero a la UUID=...entrada como se muestra por ej.blkid

Estoy usando Redhat Linux.

(alguien sugirió que debería preguntar esto aquí en unix.stackexchange.com, así que lo moví del stackexchange.com original)


3
Consulte unix.stackexchange.com/questions/11311/… sobre cómo obtener el sistema de archivos, después del cual puede ejecutar blkid.
muru

Tenga en cuenta que no todos los sistemas de archivos tendrán un UUID; blkid no le dará un UUID, por ejemplo. para montajes NFS.
oliver

Respuestas:


8

Una opción es stat+ findmntcombo:

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

Aquí -ndeshabilita el encabezado e -o UUIDimprime solo el valor UUID. La opción -c '%m'de statestá presente para generar solo el punto de montaje de la ruta dada.


2
No hay necesidad de stat:findmnt -no uuid -T "$path"
don_crissti

3

Puede usar df para encontrar el punto de montaje del archivo y luego aplicar el resultado a blkid al UUID. Debe ejecutar (al menos) blkid como raíz para que esto funcione:

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

Mejor sería -o export, ya que imprime la salida del formulario UUID=....
muru

@muru no tenía claro si solo se requería el UUID ( -o value) o una UUID="value"expresión de tipo ( -o export). Elegí el valor.
roaima
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.