linux - 递归复制文件时避免多次复制子目录内容
问题描述
该脚本执行将所有文件(不包括“.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
解决方案
考虑用for
单个命令替换案例:
rsync -avz --exclude '*.log' path/to/source/ path/to/destination/
rsync
不需要rtools
运行。它在本地工作得很好,就像这样的目的。
推荐阅读
- javascript - Javascript 无法在我的表单中正常工作
- excel - sumifs 函数在评估的单元格中有多个字符串
- highcharts - Highcharts 地图:无法根据城市名称在世界地图中绘制数据
- apache - 限制浏览器访问json页面访问,但js文件要调用json
- vlsi - 当我们从一个节点转移到另一个节点时,例如从 14nm 到 7nm 技术,设计流程将如何变化?
- c# - 安装 Nuget 包 Microsoft.Asp.Net.Webhelpers 后无法连接到数据库
- google-apps-script - documentapp.getactivedocument().getBlob 给出 pdf
- javascript - React Native + Redux,使用 Express 后端设置
- r - “参数“名称”缺失,没有默认值”(R 错误)
- python - 模拟类和方法没有被修补