Linux中find命令用来在指定目录下查找文件。通过组合不同参数可以在linux系统中快速查找需要的文件或目录。

find命令语法

格式:find pathname -options [ -print | -exec | -ok | -print0 ]

pathname: 查找路径设置

options: 选项。每一个选项前面都会带一个横杠-,常用选项如下:

-name:按照文件名来查找文件(大小写匹配敏感),后面跟完整文件名或者文件模式,用双引号包含。
-iname:按照文件名来查找文件(忽略大小写),后面跟文件名或者文件模式,用双引号包含。
-mtime [ n| -n| +n ]:按照文件的更改时间来查找文件,n表示天数。分别表示第n天、n天以内及n天以前。
-type [ f| d| b| c| p| l ]:查找某一类型的文件。比如f-文件,d-目录(常用),b-设备文件,c-字符设备文件,p-管道文件,l-符号链接文件。
-size n[B|KB|M] :查找大小为n的文件,n表示文件大小,可以带单位。比如+100M表示查找大于100M文件,-100M表示查找小于100M文件,100M表示查找等于100M文件
-depth:查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-maxdepth:控制查找目录层级数。如果使用,该参数通常放在第一个。比如在当前目录查找-maxdepth 。
-prune: 不在当前指定的目录中查找,如果同时使用了-depth选项,那么-prune选项会被忽略

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

-print0: 可以处理文件名包含空格情况,建议find与xargs结合时使用。

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

-ok:  有提示,很少用。

find查找实例

(1)按文件名查找

find /etc -name "*.txt"  #在/etc目录下以.txt后缀的文件
find /etc -name "[A-Z]*" #在/etc目录下查找以大写开头的文件
find /etc -name "host*" #在/etc目录下查找以host开头的文件
find . -maxdepth -type f -name "*.txt" -o -name "*.unl" #查找当前目录下txt和unl后缀的文件
find . -maxdepth -type f \( -name "*.txt" -o -name "*.unl" \) #同上

(2)按时间范围查找

find /home -type f -mtime  #查找/home目录下第5天修改的文件
find /home -type f -mtime - #查找/home目录下5天内修改的文件
find /home -type f -mtime + #查找/home目录下5天前修改的文件
find /home -type f -cmin + #查找/home目录下5分钟前修改的文件

(3)按文件类型查找

find /etc -type f #查找/etc目录下所有的普通文件
find /etc -type d #查找/etc目录下所有的目录
find /etc ! -type d #查找/etc目录下所有非目录类型文件
find /etc -type l #查找/etc目录下所有的符号链接

(4)按文件大小查找

find /home -type f -size 100M #查找/home目录下等于100M的文件
find /home -type f -size +100M #查找/home目录下大于100M的文件
find /home -type f -size -100M #查找/home目录下小于100M的文件

(5)按文件属主、属组查找

find /tmp -user oracle #在/tmp目录下查找属主为oracle的文件
find /etc -group dba #在/etc目录下查找属组为dba的文件

(6)忽略指定目录查找

find -path /opt/bin -prune -o -type f "*.tar.gz" -print #忽略单个目录
find / -maxdepth \( -path /opt -o -path /var \) -prune -o -type f "*.tar.gz" -print #忽略多个目录

find组合命令实例(xargs&exec)

(1)查找并删除

find . -type f -name "*.aud" -print0 | xargs - -n  rm  #查找当前目录下所有的.aud文件并删除
find . -type f -name "*.aud" -exec rm -f {} \; #同上
find . -maxdepth -name "*.tar.gz" -exec rm -rf {} \; #查找当前目录下大于100M的.tar.gz文件包并删除
find /home -type f -mtime + -exec rm {} \; #查找/home目录中更改时间在7日以前的普通文件并删除

(2)查找包含指定内容的文件

find / -type f -print | xargs grep "device" #查找包含device单词的文件
find / -type f -name "*.cfg" -print | xargs grep -l "127.0.0.1" #查找包含127.0.0.1的.cfg后缀的配置文件

(3)查找并替换文件内容

find / -type f -name "*.cfg" -print | xargs sed -i 's/127.0.0.1/192.168.0.1/g' #查找包含127.0.0.1的.cfg后缀的配置文件并将127.0.0.1替换为192.168.0.

(4)查找及其他相关操作

find / -type f -size  -exec ls -l {} \; #查找大小为0的文件,并列出完整路径
find . -type f -name "*.txt" -exec mv {} /tmp \; #将查找到的.txt文件移动到/tmp目录
find /etc -perm - -print | xargs chmod o-w #在/etc目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限
find . -type f -name ".txt" -exec cp {} -C {}.bak \; #备份所有.txt文件。这是使用两个{}的方式

Linux find命令使用方法的更多相关文章

  1. Linux 常用命令使用方法大搜刮

    Linux 常用命令使用方法大搜刮 1.# 表示权限用户(如:root),$ 表示普通用户  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入 ...

  2. 【转】linux tail命令使用方法详解

    原文网址:http://www.111cn.net/sys/linux/46902.htm linux tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个 ...

  3. Linux 常用命令使用方法大搜刮(转)

    1.# 表示权限用户(如:root),$ 表示普通用户  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入相应的用户环境.  退出当前shel ...

  4. Linux核心命令使用方法

    一.Linux命令行常用快捷键 ctrl + c cancel 取消当前的操作 ctrl + l (小写字母L) clear(命令)清空当前屏幕 ctrl + d 退出当前用户 ctrl + r 查找 ...

  5. linux常用命令使用方法

    一.常用的分析服务器日志命令 1.查看有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc -l 2.查看某一个页面被访问的次数: grep "/ ...

  6. Linux awk命令使用方法

    awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...

  7. Linux sed命令使用方法

    sed(Stream Editor)是Linux中文本处理使用非常广泛的工具,可以对文件内容进行替换.删除.新增.选取特定行等功能.下面通过sed常用实例介绍sed命令的使用方法. sed基本语法 s ...

  8. Linux tcpdump命令使用方法

    tcpdump是Linux上常用的抓包命令,用于截取网络分组并输出分组内容,常用于网络问题分析和排查. tcpdump语法 tcpdump [-i 接口] [-nn] [-w 文件名] [-c 次数] ...

  9. Linux grep命令使用方法

    Linux系统中grep命令可以根据指定的字符串或者正则表达式对文件内容进行匹配查找.在Linux文件处理和SHELL编程中使用广泛. grep基本语法 用法: grep [选项] "字符串 ...

  10. java面试Linux常用命令使用方法大全

    1.# 表示权限用户(如:root),$ 表示普通用户   开机提示:Login:输入用户名   password:输入口令   用户是系统注册用户成功登陆后,可以进入相应的用户环境.   退出当前s ...

随机推荐

  1. 使用LiteOrm删除数据对象失败的坑

    使用 LiteOrm.newSingleInstance(BaseApplication.getInstance(), Constant.DB_NAME); 在不同进程中创建了两次对象,在保存和删除的 ...

  2. ORA-22922: 不存在的 LOB 值 可以使用外层嵌套wm_concat()解决

    select kw0408id, sjbh, ksrs, kch, to_char(wm_concat(kcmc)) as kcmc, ksxs, kssc, ksfs, kcxz, xsyx, nj ...

  3. 动态材质实例(Dynamic Material Instance)

    转自:http://blog.csdn.net/panda1234lee/article/details/62041775 本例将通过 “靠近影响椅子的颜色” 来展示什么是 动态材质实例(Dynami ...

  4. CRM 实体列名和标签名称

    CREATE VIEW v_entity_attribute AS SELECT EntityView.Name AS EntityName, LocalizedLabelView_1.Label A ...

  5. 《Linux 性能及调优指南》写在后面的话

    感谢飞哥的翻译. 目前飞哥 (http://hi.baidu.com/imlidapeng)的网址已经不能访问了. <Linux 性能及调优指南>这本书的原文地址:http://www.r ...

  6. 外网访问内网的FTP服务器-原理解析

    1. 背景简介 最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到.终成正果,但走了一些弯路,在此记下,以飨后人. 2. 基础知识 FTP 使用 2 个端口,一个数据端口和一个命令端 ...

  7. C# JToken类的使用,实现解析动态json数据、遍历、查找

    在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用. 为了解决动态解析js ...

  8. python- do_excel

    # @File : class_01_do_excel.py # coding=gbk #pip install openpyxl #新建.xlsx,一定要右键新建 from openpyxl imp ...

  9. tornado-5.1版本

    server.py python server.py执行 import tornado.ioloop import tornado.options import tornado.web from to ...

  10. TIDB-cenos7开发环境搭建

    1.安装centos7,注意要安装桌面,如果最小化安装,无法使用IDE了 关闭防火墙或者打开4000端口 systemctl stop firewalld.service #停止firewall sy ...