Shell脚本实现从文件夹中递归复制文件
Shell脚本实现从文件夹中递归复制文件
发布时间:2016-12-28 来源:查字典编辑
摘要:需求前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本。如下面这样的文件结构:复制代码代码如下: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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新linuxshell学习
热门linuxshell学习
脚本专栏子分类