Shell 递归查找文件
时间:2022-07-26
本文章向大家介绍Shell 递归查找文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Shell 编程 - 查找文件
实现一个脚本,可以在指定的目录下查找某个文件/目录.
- 如果找到该文件/目录,显示其完整路径名
- 如果找到多个文件,则每个文件名都显示
- 命令格式如下:
- SCRIPT_NAME SEARCH_ON_DIR SEARCH_FILENAME
思路:采用递归查找文件,$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
运行结果:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL的Bugs
- 对复制实施主键约束
- MySQL如何管理客户端的连接?
- 鸿蒙 Ability 讲解(页面生命周期、后台服务、数据访问)
- MySQL如何管理客户端连接?线程池篇
- 让python装饰器不再晦涩难懂
- Android开发3年,九月份面试12家大厂跳槽成功,我有一些面试经验想分享给你们
- MySQL的防火墙功能
- Java中线程池的参数有几个?
- MySQL企业版备份工具MEB
- python生成器函数的应用场景举例---为copy过程添加进度条显示
- 短网址程序YOURLS安装及配置教程与设置中文
- MGR用哪个版本?5.7 vs 8.0
- 同事直呼666!小姐姐仅用3行代码就能玩出花来
- MySQL升级至8.0需要考虑哪些因素?