首页 > 解决方案 > 递归复制文件时避免多次复制子目录内容

问题描述

该脚本执行将所有文件(不包括“.log”文件)和所有子目录复制到目标文件夹的简单操作。我遇到的问题是驻留在子目录中的文件也被复制到目标文件夹中,因此最终结果是这些文件显示了两次;在目标文件夹以及该文件夹的子文件夹中。如何避免这种情况?谢谢

source_dir="path/to/source"
dest_dir="path/to/destination"

arg=${1}
echo $arg

if [[ ! -d $dest_dir ]]; then
    echo "creating destination directory $dest_dir"
    mkdir $dest_dir
fi  

#copy all files that don't end with .log
for resource in `find $source_dir ! -name '*.log'`; do
        echo "copying resource $resource..."
        cp -r $resource $dest_dir
done

标签: linuxbash

解决方案


考虑用for单个命令替换案例:

rsync -avz --exclude '*.log' path/to/source/ path/to/destination/

rsync不需要rtools运行。它在本地工作得很好,就像这样的目的。


推荐阅读