Shell 编程 - 查找文件
实现一个脚本,可以在指定的目录下查找某个文件/目录.
思路:采用递归查找文件,$2表示输入第二个参数,chmod +x xxx.sh加执行权限,最后./xxx.sh运行就好
#! /bin/bash
#getFile判断传递的字符串$filename,是否包含要检索的字符串$2
#判断方法if [[ $filename =~ "$2" ]];,使用=~。不是赋值位取反的意思。
A="$2"
getFile(){
B="$filename"
if [[ "$B" =~ "$A" ]];then
echo "find in:$filename";
else
echo "no exist file in $filename"
fi
}
#append,判断传递的字符串最后一个字符是否是/,如果是则返回,如果不是则加上/并返回。
#${filename: -1}取得参数的最后一个字符
#shell返回字符串:echo输出,函数调用处接收。str=$(append)
append(){
if [ ${filename:-1} == '/' ];then
echo $filename;
else
echo $filename'/';
fi
}
#递归打开文件
openf(){
for i in `ls $filename`
do
filename=$(append $filename);
#echo $filename;
if [ -d $filename$i ];then
filename=$filename$i;
openf $filename;
filename=$1;
else
filename="$filename$i"
getFile $filename;
filename=$1;
fi
done
}
#$1目录路径,$2检索的文件名
#$1获得输入给程序的第一个参数
#-e判断是否存在
#-d判断是否是文件夹,是文件夹openf递归打开,是文件getFile判断是否是要找的
if [ -e $1 ];then
if [ -d $1 ];then
filename=$1;
#DIR
openf $filename;
else
#FILE
getFile $filename;
fi
else
echo 'No Exis PathName';
fi
运行结果: