command line - 解析`/dev/disk/by uuid/xxx`的`df`输出

・2 分钟阅读

问题

我想问问为什么这个命令有效


df -P /dev/sda1 | grep /dev/sda1 | awk '{ print $5}' | sed 's/%//g'



不是这个吗?


df -P /dev/disk/by-uuid/0E5E17800E5E1780 | grep /dev/disk/by-uuid/0E5E17800E5E1780 | awk '{ print $5}' | sed 's/%//g'



这是我的完整脚本


#!/bin/bash


inputa=90 


#outputa=$(df -P /dev/sda1 | grep /dev/sda1 | awk '{ print $5}' | sed 's/%//g')


outputa=$(df -P /dev/disk/by-uuid/0E5E17800E5E1780 | grep /dev/disk/by-uuid/0E5E17800E5E1780 | awk '{ print $5}' | sed 's/%//g') 



if ["$inputa -lt $outputa" ]


then 


 find /home/user/Documents/ipcams/ipcam2 -type f -name"*.mp4" -mtime +25 -exec rm {} ;


 (date +"%Y-%m-%d Heure: %H-%M-%S") >> /home/user/ipcam.log


 echo Pourcentage $outputa"%" >> /home/user/ipcam.log



else echo rien



fi



谢谢


回答1

问题在于,尽管df显示了有关UUID指定的设备的信息,但是,它输出的第一列仍然通过/dev/sdxy block device name-so grep 匹配失败。

实际上,根本不需要使用grep -你可以使用awk跳过标题行(甚至移除%符号):


$ df -P /dev/sda1 | awk 'NR == 2 { print substr($5,1,length($5)-1) }'


80



$ df -P /dev/disk/by-uuid/79b5546e-5b3e-4299-becb-5f0cad06cf5f | awk 'NR == 2 { print substr($5,1,length($5)-1) }'


80




回答2

/dev/disk/by-uuid/0E5E17800E5E178是指向设备的链接,它可能包含或不包含文件系统,df仅适用于文件系统,而不适用于原始设备,来自man df


df displays the amount of disk space available on the file system containing each file name argument.




Tianye profile image