Linux中find的使用(转)
本文转自:迷途花开
另一值得参考的是吴秦先生的博文linux中强大且常用命令:find、grep。
find命令用于查找文件和目录,任何位于参数之前的字符串都将被视为欲查找的目录。
find 可以指定查找条件如名称,类型,时间,文件大小,权限和所有者查找,针对多个条件进行与或非的逻辑运算。我们可以控制find的查找的行为,还可以和其他命令组合使用。
find、find .、find . –print三者等效。
查找非当前目录时,列出要查找的目录。如:find /usr/lib -name readme.txt
1. 指定查找条件
1.1按名称查找
find . -name readme.txt
查找当前目录下(递归子目录)的所有名为readme.txt的文件
find . -name
\*.txt
find . -name
“*.txt”
查找当前目录下(递归子目录)的所有名称以.txt结尾的文件,注意*号的写法,需要前面加\或者放到双引号中
find . -iname
\*.txt
默认find是区分大小写的,如果不想区分大小写,请使用-iname替代-name,如上则”abc.TXT”将被查找到
1.2 按类型查找
find . -type f
查找当前目录下(递归子目录)的所有文件
find . -type d
查找当前目录下(递归子目录)的所有目录
find . -type l
查找当前目录下(递归子目录)的所有符号链接
1.3 按时间查找
1.3.1 以小时为单位的时间
find 命令三个选项用于按照时间查找,单位都是小时:
mtime — 文件内容上次修改时间
atime — 文件被读取或访问的时间
ctime — 文件状态变化时间
这三个选项都需要配置一个n值使用,可以是-n / n / +n:
-n 小于 n
n 正好与 n 相等
+n 大于 n
find . -mtime -1
查找当前目录下(递归子目录)的所有1小时内修改的文件和目录
find . -mtime +1
查找当前目录下(递归子目录)的所有修改时间超过1小时的文件和目录
find . -mtime 1
查找当前目录下(递归子目录)的所有恰好在1小时前修改的文件和目录
1.3.2 以分钟为单位的时间
用法和*time类似,mmin、amin和cmin 的不同在于单位时间是分钟,用于查找在不到1小时的时间内变化了的文件和目录
find . -mmin -10
查找当前目录下(递归子目录)的所有10分钟内修改的文件和目录
find . -mmin +20
查找当前目录下(递归子目录)的所有20分钟外1小时内修改的文件和目录
1.3.3与特定的文件比较
-newer,-anewer和-cnewer选项用于查找与特定的文件比较的已修改或访问过的文件,类似mtime,atime和ctime
-newer 指内容最近被修改的文件
-anewer 指最近被读取过的文件
-cnewer 指状态最近发生变化的文件
find . -newer
a.txt
查找当前目录下(递归子目录)的所有修改时间在a.txt之后(所以文件更新)的文件和目录
1.4 按文件大小查找
1.4.1 -size
选项用于查找满足指定的大小条件的文件(注意不查找目录), +表示大于, -表示小于, 没有+1表示正好等于。文件大小的单位可以是字节(用c表示), kb(用k表示)。
find . -size
-100c
查找当前目录下(递归子目录)的所有文件大小小于100字节的文件
find . -size
+100k
查找当前目录下(递归子目录)的所有文件大小大于100k的文件
find . -size 0
查找当前目录下(递归子目录)的所有文件大小为0的文件
1.4.2 -empty
查找空文件和空文件夹, 和-size 0不同的在于-size 0 只查找空文件,或者说-empty -type f 等同于-size 0 :
find . –empty
查找当前目录下(递归子目录)的所有文件大小为0的文件和空文件夹
find . -empty
-type f
查找当前目录下(递归子目录)的所有文件大小为0的文件
find . -empty
-type d
查找当前目录下(递归子目录)的所有空目录
1.5 按权限和所有者查找
find . -perm 777
查找当前目录下(递归子目录)的所有权限为777的文件和目录
find . -perm
-u=rwx
查找当前目录下(递归子目录)的所有user权限为rwx的文件和目录
find . -perm
-ug=x
查找当前目录下(递归子目录)的所有user和group权限为x的文件和目录
find . -user sky
查找当前目录下(递归子目录)的所有user为sky的文件和目录
find . -group
users
查找当前目录下(递归子目录)的所有group为users的文件和目录
2. 查找条件的逻辑运算
2.1 逻辑与
find . -name
“*.java” -size -mmin -10
find . -name
“*.java” -a -size -mmin -10
查找当前目录下(递归子目录)的所有名为*.java并且修改时间在10分钟之内的文件,-a是默认选项
2.2 逻辑或
find . -name
“*.class” -o -name “*.jar”
查找当前目录下(递归子目录)的所有名为*.class或者*.jar的文件和目录
2.3 逻辑非
find . ! -user
sky
查找当前目录下(递归子目录)的所有user不是sky的文件和目录
3. 控制查找的行为
find . -maxdepth
3 -name “*.txt”
查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不超过3层
find . -maxdepth
1 -name “*.txt”
查找当前目录下(不递归子目录,因为maxdepth为1)的所有名为*.txt的文件
find . -mindepth
3 -name “*.txt”
查找当前目录下(递归子目录)的所有名为*.txt的文件,目录深度不低于3层
find . -mindepth
1 -name “*.txt”
查找当前目录下的子目录中(递归子目录)的所有名为*.txt的文件,不包含当前目录
find . -depth
-name “*.txt”
查找当前目录下(递归子目录)的所有名为*.txt的文件,每个目录都是先在目录中进行查找,然后才继续查找其子目录
4. find和其他命令的组合
find . -name
“*.jar” -exec ls -l {} \;
find . -name
“*.jar” –ls
查找当前目录下(递归子目录)的所有*.jar文件并使用ls -l列出详细信息
find . -name “*.java”
-exec grep HashMap {} \;
查找当前目录下(递归子目录)的所有的含有”HashMap”字样的*.java文件
find . -name
“*.sh” -exec mv {} backup \;
查找当前目录下(递归子目录)的所有的*.sh文件并移动到backup目录中
Linux中find的使用(转)的更多相关文章
- 在 Linux 中安装 Oracle JDK 8 以及 JVM 的类加载机制
参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找 ...
- Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数: pathname: find命 ...
- Linux中检索文件
1 , Use locate command It is a fast way to find the files location, but if a file just created ,it w ...
- 如何在Linux中搭建禅道8.4.1(httpd+php+mysql)
1.安装httpd 命令:yum install httpd 然后一路y即可 2.安装php 命令:yum install php 3.安装php-mysql 命令:yum install php ...
- Linux中的用户和用户组
在Linux中,有三种用户: Root 用户:也称为超级用户,对系统拥有完全的控制权限.超级用户可以不受限制的运行任何命令.Root 用户可以看做是系统管理员. 系统用户:系统用户是Linux运行 ...
- linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...
- 在linux中设置静态ip地址
在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...
- windows和linux中搭建python集成开发环境IDE——如何设置多个python环境
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- linux 中部署ant编译的包中缺少问题
今天遇到在window上部署ant编译的包,能运行正常,但部署在linux中出现跳不进jsp中,出现404问题,后来经过排查在jsp中<%@taglib prefix="c" ...
- 在Linux中运行Nancy应用程序
最近在研究如何将.NET应用程序移植到非Windows操作系统中运行,逐渐会写一些文章出来.目前还没有太深的研究,所以这些文章大多主要是记录我的一些实验. 这篇文章记录了我如何利用NancyFx编写一 ...
随机推荐
- Java HashMap并发死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环.这个事情我4. ...
- SQL 数据库语言分析总结(二)
介绍sql语言 我们接着一的顺序继续介绍这个语言 数据类型 整形: TINYINT(8位) SMALLINT(16位) MEDIUMINT(24位) INT(32位) BIGINT(64位) 实数: ...
- 【问题汇总】ScrollView嵌套ListView的问题
因产品的需求,需要在ScrollView中嵌套ListView来达到效果.众所周知,ScrollVIew和ListView都是可滑动的容器,嵌套使用一定会出现一些问题. [html] view pla ...
- 登录ssh时Host key verification failed错误
工作中总是测试不同的路由设备, 路由器的ip都是 192.168.111.1 ,ssh登录的时候总是出现这个错误. macos上,错误如下 spawn ssh -p 22 root@192.168.1 ...
- 一个简单程序快速入门JDBC
首先创建jdbc的库,再在这个库里面创建一张users表. drop database if exists jdbc; create database if not exists jdbc; use ...
- Android的GridView的用法-android学习之旅(二十七)
Gridview简介 GridView和ListView有相同的父类AbsListView.他和ListView唯一的区别是Gridview可以显示多列,如果不设置列数,就默认显示一列,变成了List ...
- J2EE进阶(三)struts2 <s:action>标签的用法
J2EE进阶(三)struts2 <s:action>标签的用法 前言 使用action标签,可以允许在jsp页面中直接调用Action,(类似AJAX页面调用)在调用Action时候,可 ...
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
===================================================== 最简单的基于FFmpeg的封装格式处理系列文章列表: 最简单的基于FFmpeg的封装格式处理 ...
- android 标准OTA升级流程
标准的OTA升级流程包括一下几个步骤: 1.Android设备首先会与OTA服务器进行交互,如果有更新会推送给客户.推送的信息常常会包含OTA更新包的下载地址和一些版本信息. 2.Update程序会将 ...
- 深度剖析malloc、free和new、delete
1.malloc,free是C语言的函数,而new,delete是操作符,属于C++的语法,一定注意这两个不再是函数了,而是操作符. 2.malloc和new对于分配基础类型变量和数组变量,它们除了语 ...