查找文件目录的百分比

时间:2019-10-05 17:09:18

标签: bash shell

我试图找到文件的百分比,以及它在文件目录中所占的百分比。到目前为止,这是我的代码:

 #!/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变量。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

您需要解决一些问题

  1. 脚本正在使用“%”来计算百分比。这将使用剩余部分。使用“ /”进行除法。
  2. 潜在问题:脚本正在使用“ stat”来计算文件夹的大小。您确定不需要计算文件夹中所有文件的大小吗?

这两个可以通过以下方式解决:

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控制小数点