shell指令碼從檔案夾中遞迴提取檔案

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   color   sp   for   檔案   

需求

前兩天碰到需要在十層左右的檔案夾中提取檔案的需求,於是寫了此指令碼。

如下面這樣的檔案結構:

    dir1    ├── a    │   ├── b    │   │   └── file1    │   └── file2    ├── c    │   └── d    │       ├── e    │       │   └── file4    │       └── file3    └── file5

我們需要將其中的file1~file5提取出來放到另一個檔案夾中。

指令碼

指令碼getfilefromdir.sh如下:

#!/bin/bash#desc: get file from directory#author: 十年後的盧哥哥(http://www.cnblogs.com/lurenjiashuo/)#example: sh getfilefromdir.sh A BINIT_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}checksavepathfor sfol in ${INIT_PATH}do    getfilefromdir ${sfol}done
運行
sh getfilefromdir.sh dir1/ dir2

第一個參數是源檔案夾,第二個是目地檔案夾(不需要提前建立)。

如果有同名檔案,會存在dir2.log中

結果為:

dir2├── file1├── file2├── file3├── file4└── file5

本文出自十年後的盧哥哥部落格(http://www.cnblogs.com/lurenjiashuo/),轉載請註明原文地址。

shell指令碼從檔案夾中遞迴提取檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.