Shell脚本实现从文件夹中递归复制文件
需求
前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本。
如下面这样的文件结构:
dir1 ├──a │ ├──b │ │ └──file1 │ └──file2 ├──c │ └──d │ ├──e │ │ └──file4 │ └──file3 └──file5
我们需要将其中的file1~file5提取出来放到另一个文件夹中。
脚本
脚本getfilefromdir.sh如下:
#!/bin/bash #desc:getfilefromdirectory #example:shgetfilefromdir.shAB
INIT_PATH=${1%/} SAVE_PATH=${2%/}
functionchecksavepath(){ if[-d$SAVE_PATH] then rm-rf$SAVE_PATH fi
mkdir${SAVE_PATH} touch$SAVE_PATH".log" }
functiongetfilefromdir(){ forfilein`ls$1` do if[-d$1"/"$file] then getfilefromdir$1"/"$file else localpath="$1/$file" localname=$file if[!-f$SAVE_PATH"/"$name] then echo"cp${path}to${SAVE_PATH}/${name}" cp${path}"${SAVE_PATH}/${name}" else echo"${path}filealreadyexists" echo"${path}">>$SAVE_PATH".log"2>&1 fi fi done }
checksavepath
forsfolin${INIT_PATH} do getfilefromdir${sfol} done