Shell脚本实现从文件夹中递归复制文件

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

需求

前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本。

如下面这样的文件结构:

复制代码

代码如下:

    dir1

    ├── a

│   ├── b

    │   │   └── file1

    │   └── file2

    ├── c

    │   └── d

    │       ├── e

    │       │   └── file4

    │       └── file3

└── file5

我们需要将其中的file1~file5提取出来放到另一个文件夹中。

脚本

脚本getfilefromdir.sh如下:

复制代码

代码如下:

#!/bin/bash

#desc: get file from directory

#example: sh getfilefromdir.sh A B

INIT_PATH=${1%/}

SAVE_PATH=${2%/}

function checksavepath() {

    if [ -d $SAVE_PATH ]

    then

        rm -rf $SAVE_PATH

    fi

    mkdir ${SAVE_PATH}

    touch $SAVE_PATH”.log”

}

function getfilefromdir(){

    for file in ` ls $1`

    do

        if [ -d $1″/”$file ]

        then

            getfilefromdir $1″/”$file

        else

local path=”$1/$file”

            local name=$file

            if [ ! -f $SAVE_PATH”/”$name ]

            then

echo “cp ${path} to ${SAVE_PATH}/${name}”

                cp ${path} “${SAVE_PATH}/${name}”

            else

                echo “${path} file already exists”

echo “${path}” >> $SAVE_PATH”.log” 2>&1

            fi

        fi

    done

}

checksavepath

for sfol in ${INIT_PATH}

do

    getfilefromdir ${sfol}

done

运行

复制代码

代码如下:

sh getfilefromdir.sh dir1/ dir2

第一个参数是源文件夹,第二个是目地文件夹(不需要提前创建)。

如果有同名文件,会存在dir2.log中

结果为:

复制代码

代码如下:

dir2

├── file1

├── file2

├── file3

├── file4

└── file5

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容