我试图找到文件的百分比,以及它在文件目录中所占的百分比。到目前为止,这是我的代码:
#!/bin/bash
if [ -f "$#" ]; then
dname2=$(dirname "$1");
dname=$(stat -c%s "$dname2");
size=$(stat -c%s "$1");
percent=$(($size % $dname));
echo $size;
echo $dname;
echo "File:" "$1" "(" $size "," $percent"% of "
$dname2")";
fi;
就我而言,百分比变量应该输出文件占用的百分比,但是看起来它只是输出size变量。我在做什么错了?
答案 0 :(得分:1)
您需要解决一些问题
这两个可以通过以下方式解决:
dname2=$(dirname "$1");
# this will extract size in bytes of all files in the folder. See man du
dsize=$(du -b "$dname2" | awk '{ print $1 }');
size=$(stat -c%s "$1");
# Use 'du' to calculate size for folder and/or file, if needed
# size=$(du -b "$1" | awk '{ print $1 }');
percent=$((size*100/dsize));
...
echo $percent
同样,将'size ='更改为使用'du'将允许脚本计算文件夹在文件夹中使用的空间百分比
答案 1 :(得分:0)
将百分比更改为下面的行
percent="$(echo "$size/$dname*100" | bc -l | colrm 5)";
使用colrm控制小数点