Нахождение процента файловой директории - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь найти процент файла и сколько процентов он берет в каталоге файлов. Вот мой код:

 #!/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;

Насколько мне известно, переменная процента должна выводить, сколько процентов занимает файл, но вместо этого похоже, что он выводит только переменную размера. ,Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Есть проблемы, на которые нужно обратить внимание

  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' позволит сценарию вычислить процент пространства, используемогопапка внутри папки

0 голосов
/ 05 октября 2019

Измените свой процент на строку ниже

percent="$(echo "$size/$dname*100" | bc -l | colrm 5)";

Используйте colrm для управления десятичными точками

...