不在某些目录查找字符的shell脚本
来源:互联网 发布:ubuntu修改系统语言 编辑:程序博客网 时间:2024/05/19 20:56
需求:不同版本的程序包含大量相同的文件,且不同的程序版本比较分散不容易通过直接找到目录去grep
-------------------------------------------------------------------------------------------------------------------------------------------------
最后起作用的命令是
find ./ -path *dir1* -o -path *dir2* -o -apth *dir3* -prune -o -print |xargs grep "string" -nws
-------------------------------------------------------------------------------------------------------------------------------------------------
脚本内容:
#!/bin/sh
dirs=("dir1" "dir2" "dir3" "dir4" "dir5")
#中间有空格
function find_exdir()
{
for f1 in ${dirs[@]};do
#for的使用for ;do done
if [ f1 != $1 ]
#注意if 与[ ,!=和变量和]之间都有一个空格
then
arg+="-path '*f1*' -o "
fi
done
arg2=${arg%-o*}
#字符串截取,删除字符串最右端第一个-o*匹配的子串,保留其余部分,搜索shell字符串截取有更过更灵活的使用格式
find ./ arg2 -prune -o -print | xargs grep "$2" -ns
#主要命令在当前目录查找(跳过arg2中的目录)并且对这些文件执行grep
return 1;
}
#main
#{
if [ -z "$1" -o -z "$2"];
#if 中的多个条件-o代表or -a代表and -z判断参数是否为空,搜索shell if 能够看到更多
then
echo "arg null"
else
find_exdir $1 $2
fi
#}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
想让自己的脚本不用在绝对路径可以通过添加环境变量的方式 PATH
export PATH=[pwd]:$PATH
在脚本的目录pwd,然后如上将这个目录追加到PATH中
echo $PATH
验证是否操作成功
如此后就可以在任意位置直接输脚本名称来执行了
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如此之后执行后发现脚本没起作用,但是如果把脚本转化为在命令行直接执行则work,
查百度:
查看用户的默认shell是什么 在/etc/passwdroot:x:0:0:root:/root:/bin/bash然后在shell脚本第一行就写上什么shell#!/bin/bash
也可以通过echo $SHELL查看当前的shell类型
修改为#!/bin/bash后还是问题仍然没解决
find命令中将 -path ‘*abcd*’ 改为 -path *abcd* 即可
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
prune 英文原意 减少 修建
在find中与-path 一起使用意思是在find的时候跳过这些path
- 不在某些目录查找字符的shell脚本
- shell脚本:cp某个目录下筛选(find)后的某些文件到另一个目录
- shell 脚本 打印指定目录下包含某些字符串的文件
- shell脚本的特殊字符
- shell脚本的特殊字符
- 查找目录下文件中是否包含某字符串的shell脚本
- shell:查找本目录所有C文件中具有abcdefg字符的.c文件
- 利用shell脚本监听某些远程主机的磁盘状况
- shell脚本:以一定规律替换某个目录下某些文件中的某个字符串
- 获取shell脚本自身所在目录的Shell脚本分享
- find 指定不在某个目录下查找
- 显示目录结构的shell脚本
- shell 获取脚本所在目录的方法
- 递归遍历目录的shell脚本
- 一个创建工程目录的shell脚本
- 遍历目录下的文件---shell脚本
- php strstr查找字符串中是否包含某些字符的查找函数
- php strstr查找字符串中是否包含某些字符的查找函数
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(10)-音乐音效不求人,程序员也可以DIY
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-使用box2d和着色器的最佳实践
- [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Actor与Action
- 使用Redis实现高并发分布式序列号生成服务
- 第16周 项目2-大数据集上排序算法性能上的体验
- 不在某些目录查找字符的shell脚本
- [置顶]linux下redis的最佳实践(Master-Slave)
- 期末总结
- [置顶]libGDX开发环境搭建-Android Studio 最新版
- Android studio 导入github工程
- 同步mysql数据到ElasticSearch的最佳实践
- 8.java网络编程
- github使用学习
- 关于Android wifi通信笔记