我正在寻找帮助来创建一个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"并将总计输出到屏幕。任何帮助是极大的赞赏。
答案 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;比你的挂载点数。