查找目录脚本中的更改

查找目录脚本中的更改

我正在尝试编写一个脚本来查找过去 24 小时内目录列表中的所有更改(修改、创建、删除),如下所示:

#!/bin/bash

LOGDIR=change_log
FILETYPE=*.php
DIR=www
OUTPUT=$LOGDIR/$(date +%Y-%m-%d).log


function start_check {
    for i in `find . -name $DIR -type d`;do
        used=0
        for j in `find $i -name "${FILETYPE}"`;do           
            case `find $j -mtime -1` in
                '');;
                *)  
                    if [ "$used" = "0" ];then
                        current_directory=`echo $i | cut -d'/' -f2`
                        display "$current_directory"
                    fi
                        echo $j >> $OUTPUT
                        used=1
                ;;
            esac
        done
    done
}

function display {
    echo "---------------------------------------" >> $OUTPUT;
    echo "$@" >> $OUTPUT;
    echo "---------------------------------------" >> $OUTPUT;

}

MAIN(){
    echo "START CHECKING" > $OUTPUT
    start_check;
}



MAIN

问题是,当我在 Ubuntu 中运行该脚本时,找不到任何问题,但是当我在 centos 中运行该脚本时,找不到任何更改,结果为 NULL 。
有什么想法吗?

答案1

好吧,这是一个 bash 脚本,所以我建议你通过逐行执行来调试程序,逐行复制到终端,看看它在哪里失败了,

例如,问题的一个潜在原因是,在 centos 中,由于某种原因它找不到任何文件/文件夹,因此手动执行指令find . -name "www" -type d并查看它是否返回预期结果。

对程序中的每一条指令重复该过程,由于它是一个小程序,因此它不会花费很长时间。

相关内容