返回顶部
首页 > 资讯 > 服务器 >shell脚本递归遍历目录及子目录的例子分享
  • 193
分享到

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

递归遍历子目录 2022-06-04 21:06:21 193人浏览 安东尼
摘要

用shell写的递归遍历目录的脚本,脚本实现递归遍历指定目录,打印目录下的文件名。 实例1: #!/bin/shfunction scandir() { local cur_dir parent_di

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/$namett$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

}

--结束END--

本文标题: shell脚本递归遍历目录及子目录的例子分享

本文链接: https://lsjlt.com/news/17867.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作