源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

shell脚本递归遍历目录及子目录的例子分享

  • 时间:2022-01-21 00:31 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:shell脚本递归遍历目录及子目录的例子分享
用shell写的递归遍历目录的脚本,脚本实现递归遍历指定目录,打印目录下的文件名。 实例1:
[u]复制代码[/u] 代码如下:
#!/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:递归读取目录及其子目录
[u]复制代码[/u] 代码如下:
#! /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加上执行权限即可执行
[u]复制代码[/u] 代码如下:
chmod +x test.sh sh test.sh
到此即可通过传递参数来读取目录文件了。 实例3:
[u]复制代码[/u] 代码如下:
递归实现各个子目录孙目录...... #!/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 }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部