在指定文件夹中查找指定关键字,并输出关键字包括的次数

简介:

因为要查看相关统计代码是不是部署多了。。SO。。。。

是把网上的脚本改了一下,增加了次数输出和判断。。

并且不用交互式输出,直接在命令后面接关键字和指定目录。。。

 

复制代码
#!/bin/bash 
#find files contains a keyword 
#write by xiaojing.zhao 
#2012.12.14 
 
echo -e "\nThis is a script to find all the files in a specified path contains a keyword!" 
 
echo -e "\nPlease input a keyword:" 
#read key 
#if [ "$key" == "" ]; then 
#    echo -e "keyword can not be null!\n" 
#    exit 0 
#fi 
#keyword=$key 
 
#echo -e "\nPlease input your specified path:" 
#read dir 
#判断该路径是否存在,并且是目录,不存在输出提示 
keyword=$1 dir=$2

test ! -d $dir && echo -e "The $dir is not exist in your system.\n\n" && exit 0 echo -e "\n---------------You find files are:---------------\n" #keyword=JAVA_OPTS #dir=/jboss/jboss-eap-4.3/jboss-as/ #统计文件个数 file_count=0 #递归查看所有目录,即最深路径,不显示空行 file_list=`ls -R $dir 2> /dev/null | grep -v '^$'` for file_name in $file_list do #临时文件变量temp,将ls -R即file_list中的文件名中所有匹配:后接一个或多个任意字符(.代表任意字符,*代表0个或多个$代表行尾结束符)全局替换为无 #简单的说,就是把file_name变量中的匹配:的行,将:后内容替换为空 temp=`echo $file_name | sed 's/:.*$//g'` #如果临时文件变量temp是一个目录,而非文件,就将该目录赋值给cur_dir变量 if [ "$file_name" != "$temp" ]; then cur_dir=$temp #echo "-"$cur_dir #临时显示,调试用 else #用file命令查看文件真身是否为ASCII text类型 file_type=`file $cur_dir/$file_name | grep "text"` if [ "$file_type" != "" ]; then temp=`grep $keyword $cur_dir/$file_name|wc -l 2> /dev/null` #echo "--"$cur_dir/$file_name #临时显示,调试用 if [ "$temp" != "" ] && [ $temp -gt 0 ]; then echo $cur_dir/$file_name $temp #文件个数加1 let file_count++ fi fi fi done echo -e "\n-------------------------------------------------" echo -e "\n\nFiles Total: $file_count" echo -e "\nFind Finished!\n"
复制代码

目录
相关文章
|
2月前
|
算法 前端开发
在系统中查找重复文件
在系统中查找重复文件
26 0
|
9月前
|
Python
#PY小贴士# for 循环定义的变量,循环外可以用吗?
我们知道,在 python 中要获取一个变量的值,必须是先给它赋值过,不然就是未定义。那么这个 i,代码中没有显式的赋值,在循环体之外还可以用吗?
|
10月前
|
Python
Python应用专题 | 17:根据子字符列表过滤掉给定列表
根据子字符列表过滤掉给定列表,从而实现数据的筛查或者去除
|
编译器 C语言 C++
【C++要笑着学】关键字 | 命名空间 | 输入和输出(二)
本章将正式开始 C++ 的学习,将深入浅出地讲解。本篇将以 HelloWorld 开始,以 HelloWorld 结束。通过这段代码,讲解C++中的命名空间和输入与输出。话不多说,让我们开始吧
104 0
【C++要笑着学】关键字 | 命名空间 | 输入和输出(二)
|
编译器 C语言 C++
【C++要笑着学】关键字 | 命名空间 | 输入和输出(一)
本章将正式开始 C++ 的学习,将深入浅出地讲解。本篇将以 HelloWorld 开始,以 HelloWorld 结束。通过这段代码,讲解C++中的命名空间和输入与输出。话不多说,让我们开始吧
118 0
【C++要笑着学】关键字 | 命名空间 | 输入和输出(一)
|
算法
保存不带循环的表
保存不带循环的表
65 0
打印列表去除[](简易循环方法)
想要print(list)结果不是这样:[1,2,3] 预期结果:共有3个数字满足,分别是:1 2 3
61 0
|
Java
【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )
【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )
268 0
怎样去掉list里重复的数据(多种方法)
怎样去掉list里重复的数据(多种方法)
147 0
怎样去掉list里重复的数据(多种方法)