linux脚本遍历目录,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

}

js

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值