• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > 使用Bash Shell对目录中的文件实现递归式拷贝

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了bash shell,bash shell是什么,bash shell教程,win10 bash shell,linux bash shell等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

</div>

您可能想查找下面的文章:

  • bash判断文件或文件夹是否存在的shell代码
  • 使用Bash Shell检查文件是否存在的方法
  • Bash中数组的操作教程
  • Bash Shell中的select命令简单使用示例
  • 使用Bash Shell获取文件名和目录名的简单方法
  • 使用Bash Shell对目录中的文件实现递归式拷贝
  • Linux bash Shell中的变量类型详解
  • Bash Shell中忽略大小写的设置方法
  • Shell 编程:Bash空格的那点事
  • Bash Shell 注释多行的几种方法

相关文章

  • Linux下Shell脚本中几种基本命令的替换区别
  • linux shell的输出效果修改方法(界面颜色)
  • Linux下实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本分享
  • linux 环境 mysql写入中文报错
  • Shell获取文件的文件名和扩展名的例子
  • 合并一个文件夹下多个文件内容的单行shell命令
  • 详解Linux--shell脚本之正则表达式
  • shell版Nginx日志蜘蛛爬取查看脚本
  • 详谈linux中sar的使用方法
  • centos/rhel下实现nginx自启动脚本实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 用来记录登录后使用命令的shell脚本
    • 判断Linux Shell环境变量是否存在
    • linux shell 中 2>&1的含义
    • Shell中的循环语句for、while、until实例讲解
    • Shell脚本实现查杀子进程、僵尸进程
    • linux文本过滤grep基础命令介绍(5)
    • Git中需要熟记的命令小结
    • 详解shell中>/dev/null 2>&1到底是什么
    • Shell脚本实现监控swap空间使用情况和查看占用swap的进程
    • vtune自动化安装脚本

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有