find命令

find pathname -options [-print -exec -ok ...]

  -print: find命令将匹配的文件输出到标准输出。

  -exec: find命令对匹配的文件运行该參数所给出的shell命令。对应命令的形式为'command' { } \;,注意{ }和\;之间的空格。

  -ok: 和-exec的作用同样,仅仅只是以一种更为安全的模式来运行该參数所给出的shell命令,在运行每个命令之前,都会给出提示,让用户来确定是否运行。





样例:

$ find /etc -name "host*" -print 在/etc文件夹中查找文件名称以host开头的文件;

$find . -name "[a-z][a-z][0--9][0--9].txt" -print 在当前文件夹查找文件名称以两个小写字母开头,跟着是两个数字,最后是.txt的文件;



另外find是分大写和小写的,假设不想分大写和小写,可用-iname替换-name.

-type f,表示仅仅找file,文件类型的,文件夹和其它字节啥的不要

find ./ -type f -exec grep iceskysl {} /dev/null \;



适用于正则查找,也适用于内容查找:

查找文件夹下的全部文件里是否含有某个字符串 ,xargs表示把后面的结果作为前面命令的參数:

find .|xargs grep -ri "IBM" 相当于grep –ri “IBM” ./

查找文件夹下的全部文件里是否含有某个字符串,而且仅仅打印出文件名称

find .|xargs grep -ri "IBM" -l 相当于grep –ril “IBM” ./



-exec作为find命令的參数,使用{}替换find的结果,末尾要加\;作为-exec命令的终结符:

拷贝文件夹下全部的.py文件:

find ./ -name *.py -exec cp {} /tmp/ \;

find ./ -name "*.txt" -exec grep "bin" {} \;

find ./ -name "*.txt" -exec rm {} \; 

shell的内建命令exec将并不启动新的shell,而是用要被运行命令替换当前的shell进程,并且将老进程的环境清理掉,并且exec命令后的其他命令将不再运行。



当然,find ... | xargs rm -rf   也有一样的作用。



find能够有逻辑运算,特别是取非:

find ./ ! -name "extract*"          #找出目录下全部不以extract開始的文件

find ./ -name "*.py" -o -name "*.sh"         # or的缩写,找出目录下全部以py或者sh为后缀的文件

find ./ -name "*.java" -a -size +100k -mmin -10    #查找当前文件夹下(递归子文件夹)的全部名为*.java而且改动时间在10分钟之内的文件,-a是默认选项

find ./ ! -name "*.py" -o -name "*.sh"         # 找出目录下全部不是以(py或者sh)为后缀的文件

find ./ ! -name "*.py" -exec rm {} \;          #删除目录下全部不是以.py结尾的文件

linux find命令强大之处的更多相关文章

  1. Linux常用命令集合

    常用的Linux命令,备忘 1 pwd 显示当前目录 命令格式: pwd [选项] 2 cd 更换目录 命令格式: cd [目录名] 例: 3 ls 显示当前目录内容 命令格式: ls [选项] [目 ...

  2. Linux常用命令_(安装包管理)

    rpm命令: RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm -ivh rpm包安装rpm包rpm -Uvh rp ...

  3. Linux 入门命令

    本文系转载:http://www.cnblogs.com/wwj9413/archive/2012/03/15/2638638.html#2929949 1.Linux进入与退出系统 进入Linux系 ...

  4. linux + shell 命令等

    Linux命令[注意:建议用UltraEdit打开] 一.文件处理命令 1.命令格式与目录处理命令 ls –a[查看隐藏文件] ls –l[查看文件信息长格式显示] ls –d[查看指定目录的详细信息 ...

  5. linux netcat 命令详解

    功能说明:强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p< ...

  6. Linux常用命令之文件和目录处理命令

    目录 1.Linux命令的普遍语法格式 2.目录处理命令 一.显示目录文件命令:ls 二.创建目录命令:mkdir 三.切换目录命令:cd 四.shell内置命令和外部命令的区别 五.显示当前目录命令 ...

  7. Linux系列教程(四)——Linux常用命令之文件和目录处理命令

    这个系列教程的前面我们讲解了如何安装Linux系统,以及学习Linux系统的一些方法.那么从这篇博客开始,我们就正式进入Linux命令的学习.学习命令,首先要跟大家纠正的一点就是,我们不需要记住每一条 ...

  8. linux操作系统2 linux常用命令

    知识内容: 1.目录及文件操作 2.用户.群组与权限 3.重定向.管道 4.磁盘存储管理 5.系统命令 6.其他命令 参考: http://man.linuxde.net/ Linux命令规则:目录名 ...

  9. Linux shell命令中expr

    在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作. 先说四则运算,在Shell中四则运算不能简简单单的加 ...

随机推荐

  1. SqlServer数据库存储过程的使用

    搞开发这么久了,说实话很少用到存储过程,大部分代码都在业务层给处理了. 今天在做APP接口的时候,表里面没有数据,需要模拟一些数据,于是就想到存储过程,来一起用下吧. SqlServer中创建存储过程 ...

  2. 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox

    原文 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox 很久没自己写写心得日志与大家分享了,一方面是自己有点忙,一方面是自己有点懒,没有及时总结.因为实践是经验的来源,总结 ...

  3. 在windows下如何配置RTT开发环境?

    之前一直使用MDK查看和编译RTT的源码,这几天无聊想起RTT官方提供使用scons工具编译RTT,因此想试试这种方法,做下此笔记,以供入门者参考. 注 1 下载安装Python2.7 论坛中很多人说 ...

  4. SQL窗体函數一例

    需求: MSSQL,列出服務實例中全部數據庫的例如以下信息: 數據庫ID.數據庫名.創建日期.數據文件類型.數據文件大小.數據庫總大小.文件所在路徑. 寫法(後面的百分比為所花時間占比): -- 连接 ...

  5. Java byte数据类型详解

    public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b ...

  6. Qt之界面出现、消失动画效果

    在学习Qt的这2.3个月里,对Qt越发感兴趣,从刚开始的盲目.无所适从到现在的学习.研究.熟练.掌握的过程中,我学到了很多东西,也学会了如何通过自学让自己更加成熟.强大起来,如何更有效地提高自己学习. ...

  7. Swift - 使用atlas图集实现动画效果(SpriteKit游戏开发)

    我们通常继承SKSpriteNode来实现游戏中的元素,除了可以使用图片作为纹理皮肤外.我们还可以使用动画纹理集来实现动画播放. 动画纹理集的制作也很简单,首先要有一套动画序列图,然后把它们放到一个文 ...

  8. MsSqlServer bak文件数据导入

    MsSqlServer  bak文件数据导入 第一步首先在你的数据库中建立一个空数据库 选中新建的数据库 鼠标右键 任务 还原 数据库 这个时候会弹出这种一个框 之后选择原设备 会弹出 点击加入 找到 ...

  9. Hbase初体验

    搭建local模式搭建, 官网:http://hbase.apache.org API:http://hbase.apache.org/apidocs/index.html download:http ...

  10. C++建立动态二维数组

    C++建立动态二维数组主要有两种方法: 1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组                           int * ...