2022
我们一起努力

Shell脚本实现从文件夹中递归复制文件(shell脚本的实现)

需求

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

如下面这样的文件结构:
复制代码 代码如下:
    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

本文从互联网转载,来源地址:www.downzz.com/linux-shell/171176.html,原作者保留一切权利,若侵权或引用不当,请联系茶猫云(cmy.cn)删除。【茶猫云,优质云服务器提供商】

赞(0)
文章名称:《Shell脚本实现从文件夹中递归复制文件(shell脚本的实现)》
文章链接:https://www.fzvps.com/28717.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!