如何确定特定文件所在的块设备(/dev/sd* 或 UUID)

如何确定特定文件所在的块设备(/dev/sd* 或 UUID)

我需要为另一个应用程序生成一个字符串来定位我的文件。我需要知道如何动态访问该文件。

customfile=/dev/sda1:/images/myfs.squashfs

假设我可以stat some/file/here.txt。我可以使用什么命令来确定它的块设备,以及该设备的绝对路径?

另外,如何确定here.txt设备的绝对路径?

答案1

您可以找到您的文件所在的设备df。使用选项选择输出列--output。请注意,df输出包含文件系统的设备。如果你使用左心室容量,卢克斯,姆德莱德等等,来源列将包含逻辑设备的路径。

df --output=source $path |tail -1

目标您可以在该列中获取设备的挂载点:

df --output=target $path |tail -1

要获取相对于已安装设备的根目录的路径,请从路径的开头删除安装点。使用外壳参数扩展

echo ${path#$(df $path --output=target |tail -1)}

相关内容