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 数组属性和方法
- 如何优雅打印nginx header和body
- Go的CSP并发模型实现:M, P, G
- Golang依赖管理工具:glide从入门到精通使用
- Redis的Multi的内幕真相
- shell expect权威指南和实战
- 3种方式限制ip访问Oracle数据库
- 服务发现之consul的介绍、部署和使用
- Mybatis处理查询map 为null 导致查询map无该key对象
- 深入对比TOML,JSON和YAML
- consul配置参数大全、详解、总结
- 跳跃表原理和实现
- 你动、蒙娜丽莎跟着一起动,OpenCV这么用,表情口型造假更难防了
- 好用的PHP高性能多并发restful的HTTP Client
- Golang程序调试工具介绍(gdb vs dlv)
- tcp_tw_reuse、tcp_tw_recycle注意事项