ksh - 比较今日和昨天的文件大小

时间:2015-07-20 13:47:31

标签: shell unix ksh

我需要将今天生成的文件的大小与昨天的大小进行比较(每天生成一个新文件 - 大小很大)

=AVERAGEIF(Range,"<>"&0)

最好的方法是什么(编码新手)? 我发现这个代码,但我认为这对闰年等不太好。

fileA_20150716.log
fileB_20150717.log
fileC_20150718.log
fileD_20150719.log

3 个答案:

答案 0 :(得分:0)

您可以从此Bash脚本开始并根据需要进行扩展:

f <- function(x) x^2
g <- function(y) y^2
z <- function(x,y) f(x)*g(y)

它不使用日期,而是比较相邻的日志文件对。您可以将#!/bin/bash A=(*.log) for ((i = 0; i < ${#A[@]} - 1; i++)); do diff "${A[i]}" "${A[i + 1]}" done 命令替换为更适合您的命令。

答案 1 :(得分:0)

  

我需要将今天生成的文件的大小与昨天的文件大小进行比较

不是从今天的日期构建昨天文件的文件名(这很棘手,如你所知),为什么不简单地查找具有正确名称(模式)和<的文件? em>昨天的修改时间?这更容易:

TODAYSSIZE=`find . -name "file*\.log" -daystart -mtime 0 -printf "%s"`
YESTERSIZE=`find . -name "file*\.log" -daystart -mtime 1 -printf "%s"`

然后使用您需要做的任何值。

根据您的要求调整搜索路径(.),文件名模式(file*\.log)和显示的实际尺寸格式(%s)。

假设你有GNU find可用; AIX附带的find不会-printf。不过,您仍然可以使用它来获取文件名:

TODAYSFILE=`find . -name "file*\.log" -daystart -mtime 0`
YESTERFILE=`find . -name "file*\.log" -daystart -mtime 1`

然后以您喜欢的方式检索文件大小(ls -s $TODAYSFILE或其他)。

请注意find递归地工作,即它也会在子目录中找到日志文件。 GNU find可以告诉-maxdepth 1以避免这种情况,AIX find不能。{/ p>

答案 2 :(得分:0)

#!/usr/bin/bash

a=$(date  +%Y%m%d)
b=$(date -d yesterday  +%Y%m%d)

for f in *$a.log
do
    wc $f ; wc ${f/$a/$b}
done