Home > Backend Development > Python Tutorial > Use Bash Shell to recursively copy files in a directory

Use Bash Shell to recursively copy files in a directory

高洛峰
Release: 2017-01-09 13:30:24
Original
1524 people have browsed it

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

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


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template