Como obter um UUID do sistema de arquivos com um caminho?


9

Recebi um caminho de um diretório ou arquivo.

Qual script de utilitário / shell fornecerá de forma confiável o UUID do sistema de arquivos no qual esse diretório / arquivo está localizado?

Por UUID do sistema de arquivos, quero dizer a UUID=...entrada, como mostrado porblkid

Estou usando o Redhat Linux.

(alguém sugeriu que eu deveria perguntar isso aqui em unix.stackexchange.com, então mudei do original stackexchange.com)


3
Veja unix.stackexchange.com/questions/11311/… sobre como obter o sistema de arquivos, após o qual você pode executar blkid.
muru

Observe que nem todos os sistemas de arquivos terão um UUID; O blkid não fornecerá um UUID, por exemplo. para montagens NFS.
Oliver

Respostas:


8

Uma opção é stat+ findmntcombo:

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

Aqui -ndesativa o cabeçalho e -o UUIDimprime apenas o valor UUID. A opção -c '%m'of statestá presente para gerar apenas o ponto de montagem do caminho especificado.


2
Não é necessário stat:findmnt -no uuid -T "$path"
don_crissti

3

Você pode usar o df para localizar o ponto de montagem do arquivo e aplicar o resultado ao blkid no UUID. Você precisa executar (pelo menos) blkid como root para que isso funcione:

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

Melhor seria -o export, uma vez que imprime a saída do formulário UUID=....
muru

@ muru não estava claro para mim se apenas o UUID era necessário ( -o value) ou uma UUID="value"expressão de tipo ( -o export). Eu escolhi valor.
roaima
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.