有没有办法输出和记录从shell脚本中删除的文件数

时间:2014-01-17 09:32:58

标签: linux shell unix command

我有一个名为somefile.sh的shell脚本文件,它的代码如下,

somefile.sh

find /xxx/yyy/* -mtime +30 -exec rm {} \;
find /xxx/zzz/* -mtime +30 -exec rm {} \;
find /xxx/xyx/* -mtime +30 -exec rm {} \;
find /xxx/xzx/* -mtime +30 -exec rm {} \;

这每天都在一个cron中运行,

现在我要为此设置一个日志文件, 对于每个shell脚本,我想将每个命令结果输出到一个文件,然后,

任何人都可以帮助我解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:2)

使用过期日构建文件夹列表。

cat folder.list

/xxx/yyy  30
/xxx/zzz  30
/xxx/xyx  7
/xxx/xzx  14

更新somefile.sh

LOG=/var/tmp/LOG

while read folder day X
do
    echo "Working on folder ${folder} .."
    find ${folder}/* -mtime +${day} -type f |while read line
    do
        echo "removing $line ...."
        rm ${line}
    done
done <folder.list >> $LOG

使用新请求更新(计算删除文件)

#!/usr/bin/bash

LOG=/var/tmp/LOG

while read folder day X
do
    echo "Working on folder ${folder} .."
    i=0
    find ${folder}/* -mtime +${day} -type f |while read line
    do
        echo "removing $line ...."
        rm ${line}
        ((i++))
    done
    echo "Totally deleted $i files in folder $folder"
done <folder.list >> $LOG

答案 1 :(得分:0)

让你找到它删除的内容

find /xxx/zzz/* -mtime +30 -print -exec rm {} \;

find /xxx/zzz/* -mtime +30 -exec echo Removing +30 days file {} \; -exec rm {} \;

接下来,您可以按照自己的方式过滤输出(wc -l或grep -c)。