源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-09-21 05:51 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Shell脚本实现从文件夹中递归复制文件
[b]需求[/b] 前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本。 如下面这样的文件结构:
[u]复制代码[/u] 代码如下:
    dir1     ├── a     │   ├── b     │   │   └── file1     │   └── file2     ├── c     │   └── d     │       ├── e     │       │   └── file4     │       └── file3     └── file5
我们需要将其中的file1~file5提取出来放到另一个文件夹中。 [b]脚本[/b] 脚本getfilefromdir.sh如下:
[u]复制代码[/u] 代码如下:
#!/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
运行
[u]复制代码[/u] 代码如下:
sh getfilefromdir.sh dir1/ dir2
第一个参数是源文件夹,第二个是目地文件夹(不需要提前创建)。 如果有同名文件,会存在dir2.log中 结果为:
[u]复制代码[/u] 代码如下:
dir2 ├── file1 ├── file2 ├── file3 ├── file4 └── file5
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部