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

前言
    今天工作中遇到了一个问题,如果将目录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中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2281094.html

(0)
上一篇 2025年2月27日 18:24:10
下一篇 2025年2月18日 05:29:22

AD推荐 黄金广告位招租... 更多推荐

发表回复

登录后才能评论