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

 更新时间:2015年07月30日 09:58:16   作者:低调小一  
这篇文章主要介绍了使用Bash Shell对目录中的文件实现递归式拷贝,适用于Ubuntu等Debian系的Linux系统,需要的朋友可以参考下

前言
    今天工作中遇到了一个问题,如果将目录A中的文件拷贝到目录B中(前提目录B没有该文件),并保持文件在目录A的结构。项目重点如下:

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

    项目需求示例图如下:

201573095548233.png (813×599)

实现
    项目需求有了,知道设计到递归,代码就很好写了。这里给出一个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 

相关文章

  • Shell+Linux命令实现日志分析

    Shell+Linux命令实现日志分析

    这篇文章主要介绍了Shell+Linux命令实现日志分析,本文给出了结合grep命令、awk命令等实现了几个常用的日志分析统计长命令,需要的朋友可以参考下
    2014-08-08
  • Git 常用命令整理

    Git 常用命令整理

    本文主要介绍了Git 命令,这里对Git 常用命令进行了整理,在开发项目过程中足够用了,有需要的小伙伴可以参考下
    2016-07-07
  • shell脚本换行问题实战记录

    shell脚本换行问题实战记录

    换行相信大家都不陌生,下面这篇文章主要给大家介绍了关于shell脚本换行问题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Shell中关于exit 0的那些坑

    Shell中关于exit 0的那些坑

    在 shell 编程中,需慎用 exit 0,本文主要介绍了Shell中关于exit 0的那些坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Linux chown命令使用示例

    Linux chown命令使用示例

    Linux chown命令用于设置文件所有者和文件关联组的命令,chown 需要超级用户 root 的权限才能执行此命令,本文给大家分享Linux chown命令使用示例,感兴趣的朋友一起看看吧
    2023-03-03
  • Shell $0, $#, $*, $@, $?, $$和命令行参数的使用

    Shell $0, $#, $*, $@, $?, $$和命令行参数的使用

    这篇文章主要介绍了Shell $0, $#, $*, $@, $?, $$和命令行参数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Linux batch命令详解(在系统不繁忙的时候执行定时任务)

    Linux batch命令详解(在系统不繁忙的时候执行定时任务)

    batch命令 用于在指定时间,当系统不繁忙时执行任务,用法与at相似,这篇文章主要介绍了Linux batch命令(在系统不繁忙的时候执行定时任务),需要的朋友可以参考下
    2024-02-02
  • Linux启动与自启动的实例详解

    Linux启动与自启动的实例详解

    这篇文章主要介绍了Linux启动与自启动的实例详解的相关资料,希望通过本文大家能理解掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • shell读取配置文件的方式sed命令详解

    shell读取配置文件的方式sed命令详解

    在编写启动脚本时,涉及到读取配置文件,特地记录下shell脚本读取启动文件的方式,这篇文章主要介绍了shell读取配置文件-sed命令,需要的朋友可以参考下
    2023-04-04
  • 关于使用shell脚本循环处理文本的问题

    关于使用shell脚本循环处理文本的问题

    今天给大家普及关于使用shell脚本循环处理文本的问题,其实操作步骤很简单,本文通过脚本实例给大家讲解,感兴趣的朋友跟随小编一起看看吧
    2021-06-06

最新评论