专栏中心

EEPW首页 > 专栏 > synchronize folders

synchronize folders

发布人:0750long 时间:2009-07-15 来源:工程师 发布文章
synchronize folders

 

#!/bin/sh

#synchronize folders
show_usage() {
    echo "Usage:"
    echo "  synch_folder [-e NAME] src_folder des_folder"
    echo ""
    echo "    Copy files from src_folder to des_folder. If -e NAME is given, the"
    echo "    files or sub-folders with this name won't be copied."
    echo ""
    echo "Synchronize folders, write by Oliver Nie."
    return 1
}


#validate the parameter number

if
[ $# -lt 2 ]; then
    show_usage
    exit 1
fi

#validate the parameter number
if
[ $1 = "-e" ] && [ $# -lt 4 ]; then
    echo "Two folders must be given."
    show_usage
    exit 1
fi

#get the parameters
if
[ $1 = "-e" ]; then
    ex_name=$2
    src=$3
    des=$4
else

    src=$1
    des=$2
fi

if
[ ! -e $src ] || [ ! -e $des ]; then
    echo "Folder $src or $des is not existed."
    show_usage
    exit 1
fi


#output the file list

if
[ -z $ex_name ]; then
    pushd $src
    find . -print | sed "s/\.\///g"  | sort > ../src_list
    popd
    pushd $des
    find . -print | sed "s/\.\///g"  | sort > ../des_list
    popd
else
 # supress the given name
    pushd $src
    find . -path "*$ex_name" -prune -o -print | sed "s/\.\///g" | sort > ../src_list
    popd
    pushd $des
    find . -path "*$ex_name" -prune -o -print | sed "s/\.\///g" | sort > ../des_list
    popd
fi

cnt=0
# file list in both folders

for
i in `comm -12 src_list des_list`; do
    if [ -d "$src/$i" ]; then
        continue
    else
        cp $src/$i $des/$i -f
        cnt=`expr $cnt + 1`
    fi
done

#echo "Total $cnt files copied!"
# file list only in source folder
for i in `comm -23 src_list des_list`; do
    if [ -d "$src/$i" ]; then
        mkdir $des/$i
        continue
    fi
    cp $src/$i $des/$i -f
    cnt=`expr $cnt + 1`
done


echo
"Total $cnt files copied!"

rm
src_list des_list

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

英伟达和OpenAI推出开源推理模型

苹果称将从三星德克萨斯州工厂采购芯片

news

wujian-hz 2005-02-13

静电工业电机避开磁性元件

模拟电子技术 第二讲

视频 2010-01-20

只有美资半导体芯片公司才能避免100%关税

Protel 99 SE 视频教程 —— 第六节 绘制PCB印制电路板(1)

视频 2010-01-19

台积电投资「川普随便喊」很悲哀 分析师提1招反击美国

EDA/PCB 2025-08-07

摩根大通:特朗普对关键行业的关税可能会持续到他的总统任期更长

台积电内鬼怎被揪出来的? 媒体人还原过程

EDA/PCB 2025-08-07

Protel 99 SE 视频教程 —— 第五节 创建PCB元器件

视频 2010-01-19

据报道,OpenAI正在就估值$500B二次进行销售的谈判

智能计算 2025-08-07

模拟电子技术 第一讲

视频 2010-01-20

Protel 99 SE 视频教程 —— 第七节 绘制PCB印制电路板(2)

视频 2010-01-19

特朗普计划对芯片征收100%关税,并豁免苹果等

EDA/PCB 2025-08-07

超材料在电子设计中的多功能性

更多 培训课堂
更多 焦点
更多 视频

技术专区