需求
前两天碰到需要在十层左右的文件夹中提取文件的需求,于是写了此脚本。
如下面这样的文件结构:
我们需要将其中的file1~file5提取出来放到另一个文件夹中。
脚本
脚本getfilefromdir.sh如下:
SAVE_PATH=${<span style="color: #800080;">2%/}
<span style="color: #0000ff;">function
<span style="color: #000000;"> checksavepath() {<span style="color: #0000ff;">if [ -<span style="color: #000000;">d $SAVE_PATH ]
<span style="color: #0000ff;">then
<span style="color: #0000ff;">rm -<span style="color: #000000;">rf $SAVE_PATH
<span style="color: #0000ff;">fi
<span style="color: #0000ff;">mkdir</span><span style="color: #000000;"> ${SAVE_PATH}
</span><span style="color: #0000ff;">touch</span> $SAVE_PATH<span style="color: #800000;">"</span><span style="color: #800000;">.log</span><span style="color: #800000;">"</span><span style="color: #000000;">
}
<span style="color: #0000ff;">function<span style="color: #000000;"> getfilefromdir(){
<span style="color: #0000ff;">for <span style="color: #0000ff;">file <span style="color: #0000ff;">in <span style="color: #0000ff;">ls</span> $<span style="color: #800080;">1</span><span style="color: #000000;">
<span style="color: #0000ff;">do
<span style="color: #0000ff;">if [ -d $<span style="color: #800080;">1<span style="color: #800000;">"<span style="color: #800000;">/<span style="color: #800000;">"$<span style="color: #0000ff;">file<span style="color: #000000;"> ]
<span style="color: #0000ff;">then<span style="color: #000000;">
getfilefromdir $<span style="color: #800080;">1<span style="color: #800000;">"<span style="color: #800000;">/<span style="color: #800000;">"$<span style="color: #0000ff;">file
<span style="color: #0000ff;">else<span style="color: #000000;">
local path=<span style="color: #800000;">"<span style="color: #800000;">$1/$file<span style="color: #800000;">"<span style="color: #000000;">
local name=$<span style="color: #0000ff;">file
<span style="color: #0000ff;">if [ ! -f $SAVE_PATH<span style="color: #800000;">"<span style="color: #800000;">/<span style="color: #800000;">"<span style="color: #000000;">$name ]
<span style="color: #0000ff;">then
<span style="color: #0000ff;">echo <span style="color: #800000;">"<span style="color: #800000;">cp ${path} to ${SAVE_PATH}/${name}<span style="color: #800000;">"
<span style="color: #0000ff;">cp ${path} <span style="color: #800000;">"<span style="color: #800000;">${SAVE_PATH}/${name}<span style="color: #800000;">"
<span style="color: #0000ff;">else
<span style="color: #0000ff;">echo <span style="color: #800000;">"<span style="color: #800000;">${path} file already exists<span style="color: #800000;">"
<span style="color: #0000ff;">echo <span style="color: #800000;">"<span style="color: #800000;">${path}<span style="color: #800000;">" >> $SAVE_PATH<span style="color: #800000;">"<span style="color: #800000;">.log<span style="color: #800000;">" <span style="color: #800080;">2>&<span style="color: #800080;">1
<span style="color: #0000ff;">fi
<span style="color: #0000ff;">fi
<span style="color: #0000ff;">done<span style="color: #000000;">
}
checksavepath
<span style="color: #0000ff;">for sfol <span style="color: #0000ff;">in<span style="color: #000000;"> ${INIT_PATH}
<span style="color: #0000ff;">do<span style="color: #000000;">
getfilefromdir ${sfol}
<span style="color: #0000ff;">done
运行
第一个参数是源文件夹,第二个是目地文件夹(不需要提前创建)。
如果有同名文件,会存在dir2.log中
结果为:
本文出自十年后的卢哥哥博客(http://www.cnblogs.com/lurenjiashuo/),转载请注明原文地址。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。