• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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

    上一篇:Shell脚本实现获取网页快照并生成缩略图
    下一篇:Shell脚本实现批量下载资源并保留原始路径
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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