中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用shell寫遞歸遍歷目錄及子目錄的腳本

發布時間:2021-09-13 09:35:12 來源:億速云 閱讀:183 作者:chen 欄目:開發技術

這篇文章主要講解了“怎么用shell寫遞歸遍歷目錄及子目錄的腳本”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用shell寫遞歸遍歷目錄及子目錄的腳本”吧!

用shell寫的遞歸遍歷目錄的腳本,腳本實現遞歸遍歷指定目錄,打印目錄下的文件名。

實例1:

代碼如下:


#!/bin/sh

function scandir() {
    local cur_dir parent_dir workdir
    workdir=$1
    cd ${workdir}
    if [ ${workdir} = "/" ]
    then
        cur_dir=""
    else
        cur_dir=$(pwd)
    fi

    for dirlist in $(ls ${cur_dir})
    do
        if test -d ${dirlist};then
            cd ${dirlist}
            scandir ${cur_dir}/${dirlist}
            cd ..
        else
            echo ${cur_dir}/${dirlist}
        fi
    done
}

if test -d $1
then
    scandir $1
elif test -f $1
then
    echo "you input a file but not a directory,pls reinput and try again"
    exit 1
else
    echo "the Directory isn't exist which you input,pls input a new one!!"
    exit 1
fi

實例2:遞歸讀取目錄及其子目錄

代碼如下:

#! /bin/bash
function read_dir(){
    for file in `ls $1`
    do
        if [ -d $1"/"$file ]  //注意此處之間一定要加上空格,否則會報錯
        then
            read_dir $1"/"$file
        else
            echo $1"/"$file
        fi
    done
}

#測試目錄 test
read_dir test
這樣給test.sh加上執行權限即可執行

代碼如下:

chmod +x test.sh
sh test.sh


到此即可通過傳遞參數來讀取目錄文件了。

實例3:

代碼如下:


遞歸實現各個子目錄孫目錄......

#!/bin/bash

#modify.func

doit()   //處理當前目錄下的非目錄文件,忽略目錄文件

{

    oldname=`ls | grep "$1$"`

    for name in $oldname

    do

       if [ -d "$name" ]

       then :

       else

            basename=`echo $name | awk -F "." '{print $1}'`  

            newname="$basename$2"                                       

            echo -e "$PWD/$name\t\t$newname"

            mv $name $newname

            count=`expr ${count} + 1`

       fi

    done

    return 0

}

do_recursive()          //從當前目錄開始,遞歸處理各目錄

{

    doit $1 $2

    for filename in `ls`

    do

         if [ -d "$filename" ]

         then

             cd $filename

             do_recursive $1 $2

             cd ..

         fi

    done

    return 0

}

modify()                     //處理當前目錄,并報告結果,這個相當于主函數,也可以直接調用do_recursive

{

    PARAMS=2

    if [ $# -ne $PARAMS ]

    then

        echo "usage: mv_to .suf1 .suf2"

        return 1

    fi

    count=0

    do_recursive $1 $2

    echo "complete! $count files have been modified."

    return 0

}

感謝各位的閱讀,以上就是“怎么用shell寫遞歸遍歷目錄及子目錄的腳本”的內容了,經過本文的學習后,相信大家對怎么用shell寫遞歸遍歷目錄及子目錄的腳本這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定日县| 淳化县| 司法| 海安县| 潞城市| 新安县| 青河县| 扶余县| 米脂县| 贡嘎县| 武威市| 姚安县| 峨眉山市| 芒康县| 黄石市| 海盐县| 绥棱县| 辉南县| 永靖县| 达州市| 潜山县| 准格尔旗| 宾川县| 嘉荫县| 桃园县| 余干县| 岑巩县| 广宗县| 兴宁市| 麻江县| 阿勒泰市| 全南县| 汉沽区| 深州市| 双城市| 资溪县| 乐平市| 松滋市| 垫江县| 襄城县| 大冶市|