#!/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
#判断该路径是否存在,并且是目录,不存在输出提示
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"

#统计文件个数
file_count=0
#定义变量filelist,递归查看所有目录,即最深路径,不显示空行( $ )
file_list=`ls -R $dir 2> /dev/null | grep -v '^$'`

#定义变量file_name,通过 fielist 传递,循环调用

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
           temp=`grep $keyword $cur_dir/$file_name 2> /dev/null`
            #echo "--"$cur_dir/$file_name #临时显示,调试用
            if [ "$temp" != "" ]; then
                echo $cur_dir/$file_name
               #文件个数加1
                let file_count++
            fi
        fi
    fi
done

echo -e "\n-------------------------------------------------"
echo -e "\n\nFiles Total: $file_count"

echo -e "\nFind Finished!\n"

转载,find.sh的更多相关文章

  1. 转载:对#!/bin/sh的认识

    转载网址:http://blog.163.com/hashes@yeah/blog/static/16867631220101029847420/ 对#!/bin/sh的认识 第一次学shell编程, ...

  2. linux启动jmeter(二十三),执行./jmeter.sh报错解决方法(转载)

    转载自 http://www.cnblogs.com/yangxia-test 1.l-bash: ./jmeter.sh: Permission denied解决办法:jmeter.sh的执行权限改 ...

  3. [转载]Android 编译环境 build/envsetup.sh分析

    2013-12-23 11:28:40 转载自: http://blog.csdn.net/evilcode/article/details/7005757 请到转载地址阅读原文, 转载以备查询.

  4. 交叉编译环境以及开发板上-/bin/sh: ./hello: not found 转载自 http://blankboy.72pines.com

    交叉编译环境以及开发板上-/bin/sh: ./hello: not found 目标板是S3C2440.至于交叉编译环境的搭建就不多说了,网上很多教程. 搭建好了交叉编译环境后,第一件事就是传说中的 ...

  5. linux下sh语法(转载)

    介绍: 1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序. 在这个例子中我们使用/bin/sh来执行程序. 当编写 ...

  6. 在CentOS 7/6.5/6.4 中安装Java JDK 8(转载)

    转载在CentOS 7/6.5/6.4 中安装Java JDK 8 首先,在你的服务器上运行一下更新. yum update 然后,在您的系统上搜索,任何版本的已安装的JDK组件. rpm -qa | ...

  7. maven package 知识(转载)

    “打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码.编译生成的字节码.配置文件.文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR ...

  8. iOS编译FFmpeg、kxmovie实现视频播放 (转载)

    由于FFmpeg开源框架的功能非常强大,可以播放的视频种类很多,同时添加第三方库kxmovie,实现视频播放,真的是爽爆了,因此今天来说一下关于FFmpeg在iOS手机上的一些配置过程,配置工具,还有 ...

  9. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

随机推荐

  1. hdu_5286_wyh2000 and sequence(分块)

    题目链接:hdu_5286_wyh2000 and sequence 题意: 给一段长度为N的序列,每次询问l-r(l和r和上一次询问的答案有关)内 不同的数的 出现次数的次方 的和.强制在线 题解: ...

  2. AVL树 高度平衡的二叉查找树

    1.What is AVL tree? AVL tree 是一种特殊的二叉查找树,,首先我们要在树中引入平衡因子balance,表示结点右子树的高度减去左子树的高度差(右-左),对于一棵AVL树要么它 ...

  3. debian服务器上不了网,缺少默认网关

    debian服务器上不了网,缺少默认网关 root@hbg:/# route -nKernel IP routing tableDestination     Gateway         Genm ...

  4. Shader之ECEF——LLH

    uniform mat4 osg_ViewMatrix; uniform mat4 osg_ViewMatrixInverse; uniform mat4 osg_ModeViewMatrix; un ...

  5. 团队项目(spring会议)

    [例会时间]2014/4/11 [例会地点]一教213课堂上 [例会形式]小组讨论 [例会主持]马翔 [例会记录]兰梦 在这次会议上,我们针对我们的项目进行了分割,并分别认领各自的任务 下面是任务的认 ...

  6. Python 学习笔记4

    我是一个艺术家. 今天继续学习python啊.争取看到python流程控制.

  7. Tomcat7调优及JVM性能优化for Linux环境

    标签: tomcat7 jvm 性能 分享到: 出处:http://www.iteye.com 该优化针对Linux X86_X64环境 1. Tomcat优化其实就是对server.xml优化(开户 ...

  8. dom入门

    当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). //显示,改变html内容 document.getElementById("p1" ...

  9. laravel性能优化

    1. 配置信息缓存 使用以下 Artisan 自带命令,把 config 文件夹里所有配置信息合并到一个文件里,减少运行时文件的载入数量: php artisan config:cache 上面命令会 ...

  10. iOS导航栏主题

    主要是取得导航栏的appearance对象,操作它就设置导航栏的主题 UINavigationBar *navBar = [UINavigationBar appearance]; 常用主题设置 导航 ...