bash脚本遍历目录指定后缀的文件,并执行操作

如,遍历log文件,需要执行的操作
有目录 /home/web/ (包含子目录)
1,遍历输出所有的子目录中,指定的后缀,如 log
2,执行,并移动log
3,还原执行文件

譬如 ,log在/home/web/3/2/9/fcn.log
手工做法如下:
cd /home/web/3/2/9/
c9 fnc.log (此时生成一个 tmp.c)
rm -rf fnc.log
mv tmp.c fnc.log

不知道如何遍历指定目录下的所有指定后缀的文件进行操作,求教!

可以使用ls或者find来完成对某个文件夹下所有文件的遍历
比如使用ls
可以简单地使用一个通配符来完成
ls 某个目录/*
也可以使用find来完成
比如
find 某个目录
自然的也可以写一个shell脚本来进行遍历
首先进行一个要遍历的文件夹
然后循环查看每个文件
如果该文件是一个文件夹的话则进入该文件夹做和上面相同的事件
这样就可以该整个文件夹内的所有文件进行遍历了
一个简单的代码如下
#!/bin/bash

function show()
{
cd $1

for i in `ls`
do
if [ -d "$i" ]
then
show "$i"
else
echo "$i"
fi
done

cd ..
}

show $1

exit 0
该程序不能遍历以.开头的隐藏文件
可以使用ls -a来进行遍历隐藏文件
遍历时需要注意.和..这两个特殊文件

下面是一个简单的代码
#!/bin/bash

function show()
{
cd $1

for i in `ls -a`
do
if [ "$i" == "." ] || [ "$i" == ".." ]
then
continue;
fi

if [ -d "$i" ]
then
show "$i"
else
echo "$i"
fi
done

cd ..
}

show $1

exit 0追问

请不要粘贴别人的答案, 答非所问了.

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答