tianheiGE 发表于 2015-8-17 19:28:06

分享个linux下一个文件夹文件更新到另一文件夹的的脚本

RT,有的时候要写个小程序,为了方便编辑把它放在虚拟机的共享目录下,然后在win中编辑,但是我的内核源码是在虚拟机里,

这部分代码要拷到内核目录下编译,所以为方便搞了这样一个脚本,脚本检查本目录的所有文件和目标目录下的文件是否为最新的,

如果本目录下的文件是最新的或者目标目录下没有这个文件,则把这个文件更新到目标目录,

TAG="/XXX/XXX" #替换成你的目标目录
PWD=$(pwd)
PWD_LEN=${#PWD}
function ergodic(){
        for file in $(ls $1)
        do
                if [ -d $1"/"$file ]; then
                        DIR=$1"/"$file
                        if [ -d $2${DIR:$PWD_LEN} ]; then#递归目录前检查目标目录是否存在
                                :               
                        else
                                mkdir $2${DIR:$PWD_LEN}       
                        fi
                        ergodic $1"/"$file $2
                else
                        update $1 $2 $file               #检测文件是否需要被更新
                fi
        done
}
function update(){
        CURR_DIR=$1
        TAG_DIR=$2${CURR_DIR:$PWD_LEN}
        if [ -e $TAG_DIR"/"$3 ]; then             #不存在直接拷贝,存在则再判断是否为最新
                if [ $1"/"$3 -nt $TAG_DIR"/"$3 ]; then
                        cp -v $1"/"$3 $TAG_DIR
                fi
        else
                cp -v $1"/"$3 $TAG_DIR
        fi
}
ergodic $PWD $TAG
exit 0

新手水平有限,那里有不好的,或者有更好的写法,还请各位拍砖

dawanpi 发表于 2015-8-17 20:34:36

代码开始要声明是什么类型的shell的,比如bash和cshell有语法差异,有可能会报错。
还有开发用的linux机器可以装x system,这样就可以直接编辑了。

tianheiGE 发表于 2015-8-17 20:59:27

dawanpi 发表于 2015-8-17 20:34
代码开始要声明是什么类型的shell的,比如bash和cshell有语法差异,有可能会报错。
还有开发用的linux机器 ...

谢谢指点{:handshake:}

yick 发表于 2015-8-17 22:54:01

不错,楼主都是金牌会员了,怎么还是新手了,谦虚了

tianheiGE 发表于 2015-8-17 23:23:39

yick 发表于 2015-8-17 22:54
不错,楼主都是金牌会员了,怎么还是新手了,谦虚了

linux相关的开发方面确实还算是新手,

fengyuxiaoxiao 发表于 2015-8-17 23:48:31

菜鸟看不懂,不知道这个脚本如何运行

ztg328 发表于 2015-8-18 18:21:59

搞samba可以映射网盘
页: [1]
查看完整版本: 分享个linux下一个文件夹文件更新到另一文件夹的的脚本