手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >Shell脚本实现从文件夹中递归复制文件
Shell脚本实现从文件夹中递归复制文件
摘要:需求前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本。如下面这样的文件结构:复制代码代码如下:dir1├──a│├──b││...

需求

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

如下面这样的文件结构:

复制代码 代码如下:

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脚本判断IP地址是否合法的方法

shell脚本中使用iconv实现批量文件转码的代码分享

shell脚本学习与总结

Shell脚本定义变量和重新赋值

Shell脚本实现自动发送邮件的例子

Shell脚本实现批量替换文件内容

Shell脚本实现线上服务器之间对比文件是否一致

Shell脚本自动备份MySQL到FTP并定期清理过期备份

Shell脚本实现查找字符串中某字符最后出现的位置

Shell脚本实现温和方式重启Centos系统

精品推荐
分类导航