用于计算命令和输出到屏幕的总计的脚本

时间:2015-11-04 18:33:32

标签: bash

我正在寻找帮助来创建一个bash脚本,该脚本将运行几个类似的命令,总计总数并将总数输出到屏幕。我想运行以下命令:

find /var/log/audit -xdev -type f -printf '%i\n' | sort -u | wc -l

find /boot -xdev -type f -printf '%i\n' | sort -u | wc -l

find /home -xdev -type f -printf '%i\n' | sort -u | wc -l

等等。我还有其他几个。我基本上做的是计算我系统上每个挂载点的所有文件,然后我需要脚本来总结每个命令的所有输出" wc -l"并将总计输出到屏幕。任何帮助是极大的赞赏。

4 个答案:

答案 0 :(得分:1)

这应该有效:

a=$(find /var/log/audit -xdev -type f -printf '%i\n' | sort -u | wc -l)

b=$(find /boot -xdev -type f -printf '%i\n' | sort -u | wc -l)

c=$(find /home -xdev -type f -printf '%i\n' | sort -u | wc -l)

final=$(($a+$b+$c))

echo $final

答案 1 :(得分:1)

我会将每个命令输出重定向到文件

your_command >> results.txt

并总结一下

awk '{ sum += $1 } END { print sum }' results.txt

答案 2 :(得分:1)

这可以在不命名的情况下使用,使用脚本更改echo n

awk '{sum+=$1} END{print "total: "sum}' < <(echo 4; echo 5; echo 6)

或者,如果不需要个人计数,您可以传递多个路径来查找

find path1 path2 path3 ...

答案 3 :(得分:1)

这可能是dc

的好地方
{
    for mnt in /var/log/audit /boot /home; do
        find "$mnt" -xdev -type f -printf '%i\n' | sort -u | wc -l
    done
    echo "+"
    echo "+"
    echo "p"
} | dc

你需要少一个&#34; +&#34;比你的挂载点数。