最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

使用BashShell对目录中的文件实现递归式拷贝

来源:动视网 责编:小采 时间:2020-11-27 14:17:04
文档

使用BashShell对目录中的文件实现递归式拷贝

使用BashShell对目录中的文件实现递归式拷贝:前言 今天工作中遇到了一个问题,如果将目录A中的文件拷贝到目录B中(前提目录B没有该文件),并保持文件在目录A的结构。项目重点如下: 需要在目录B中保持文件在目录A中的结构。假设A目录文件 A/test/1.txt,转移到目录B中应该是B/test/1.txt。同
推荐度:
导读使用BashShell对目录中的文件实现递归式拷贝:前言 今天工作中遇到了一个问题,如果将目录A中的文件拷贝到目录B中(前提目录B没有该文件),并保持文件在目录A的结构。项目重点如下: 需要在目录B中保持文件在目录A中的结构。假设A目录文件 A/test/1.txt,转移到目录B中应该是B/test/1.txt。同
前言
今天工作中遇到了一个问题,如果将目录A中的文件拷贝到目录B中(前提目录B没有该文件),并保持文件在目录A的结构。项目重点如下:

需要在目录B中保持文件在目录A中的结构。假设A目录文件 A/test/1.txt,转移到目录B中应该是B/test/1.txt。同时还需要考虑目录B中是否存在test目录,多级目录就要考虑递归了。(还好,bash shell里写个目录递归遍历还是比较简单的。)
需要考虑A中文件是否在B中已经存在同名文件,如果存在,则不需要拷贝。

项目需求示例图如下:

使用Bash Shell对目录中的文件实现递归式拷贝

实现
项目需求有了,知道设计到递归,代码就很好写了。这里给出一个demo示例,供大家参考。

#!/bin/bash 
 
 function recursive_copy_file() 
 { 
 dirlist=$(ls $1) 
 for name in ${dirlist[*]} 
 do
 if [ -f $1/$name ]; then
 # 如果是文件,并且$2不存在该文件,则直接copy 
 if [ ! -f $2/$name ]; then
 cp $1/$name $2/$name 
 fi
 elif [ -d $1/$name ]; then
 # 如果是目录,并且$2不存在该目录,则先创建目录 
 if [ ! -d $2/$name ]; then
 mkdir -p $2/$name 
 fi
 # 递归拷贝 
 recursive_copy_file $1/$name $2/$name 
 fi
 done
 } 
 
 source_dir="/tmp/test/system"
 dest_dir="/tmp/test/systemback"
 
 recursive_copy_file $source_dir $dest_dir

更多使用Bash Shell对目录中的文件实现递归式拷贝相关文章请关注PHP中文网!

文档

使用BashShell对目录中的文件实现递归式拷贝

使用BashShell对目录中的文件实现递归式拷贝:前言 今天工作中遇到了一个问题,如果将目录A中的文件拷贝到目录B中(前提目录B没有该文件),并保持文件在目录A的结构。项目重点如下: 需要在目录B中保持文件在目录A中的结构。假设A目录文件 A/test/1.txt,转移到目录B中应该是B/test/1.txt。同
推荐度:
标签: 文件 目录 递归
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top