文件查找和比较命令 来自: http://man.linuxde.net/find
文件查找和比较
1、find命令,用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时不设置任何参数,则find命令则在当前目录下查找子目录与文件。并且将查到的子目录和文件全部进行显示。
find(选项)(参数)
选项
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟记;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件和目录;
-atime<24小时数>:查找在指定时间内被存取过的目录或文件,单位以24小时记;
-cmin<分钟>:查找在指定时间内被修改过的文件或目录;
-name
-iname<文本范式>忽略大小写
-type
-links
……
……
参数:起始目录:查找文件的起始目录
实例
根据文件或者正则表达式进行匹配
(1)列出当前目录及子目录下所有文件和文件夹 find .
(2)在/home目录下查找以.txt 结尾的文件名 find /home -name "*.txt"
(3)同上忽略大小写 find /home -iname "*.txt"
(4)当前目录及子目录下查找所有以.txt和 .pdf结尾的文件 find . \( -name "*.txt" -o -name "*.pdf" \) 或者 find . -name "*.txt" -o -name "*.pdf"
(5)匹配文件路径或者文件 find /usr/ -path "*local*"
(6)基于正则表达式匹配文件路径 find . -regex ".*\(\.txt\|\.pdf\)$"
(7)同上,不区分大小写 find . -iregex ".*\(\.txt\|\.pdf\)$"
否定参数
(1)找出/home下不是以.txt结尾的文件 find /home ! -name "*.txt"
根据文件类型进行搜索
find . -type 类型参数
类型参数列表
f 普通文件
| 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
基于目录深度搜索
(1)向下最大深度限制为3
find . -maxdepth 3 -type f
(2)搜索出深度距离当前目录至少2个子目录的所有文件
find . -mindepth 2 -type f
根据文件时间戳进行搜索
find . -type f 时间戳
Unix/Linux 文件系统每个文件都有三种时间戳:
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
(1)搜索最近七天内被访问的所有文件
find . -type f -atime -7
(2)搜索恰好在七天前被访问的所有文件
find . -type f -atime 7
(3)搜索超过七天内访问的所有文件
find . -type f -atime +7
(4)搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
(5)找出比file.log修改时间更长的所有文件
find . -type f -newer file.log
根据文件大小进行匹配
find . -type f -size 文件大小单元
文件大小单元
b -- 块(512字节)
c -- 字节
w -- 字(2字节)
k -- 千字节
M -- 兆字节
G -- 吉字节
(1)搜索大于10kb的字节
find . -type f -size +10K
(2)搜索小于10KB的字节
find . -type f -size -10K
(3)搜索等于10KB的字节
find . -type f -size 10K
删除匹配文件
删除当前目录下所有.txt文件
find . -type f -name "*.txt" -delete
根据文件权限/所有权进行匹配
(1)当前目录下搜索出权限为777的文件
find . -type f -perm 777
(2)找出当前目录下权限不是644的php文件
find . -type f -name "*.php" ! -perm 644
(3)找出当前目录用户tom拥有的所有文件
find . -type f -user tom
(4)找出当前目录用户组sunk拥有的所有文件
find . -type f -group sunk
借助 -exec选项与其他命令结合使用
(1)找出当前目录下所有root的文件,并把所有权更改为用户tom
find . -type f -user root -exec chown tom {} \;
上列中,{}用于与-exec选项配合使用来匹配所有文件,然后会被替换为相应的文件名。
(2)找出自己家目录下所有的.txt文件并删除
find $HOME/. -name "*.txt" -ok rm {} \;
上列中,-ok与-extc行为一样,不过它会给出提示,是否执行相应的操作。
(3)找出当前目录下所有的.txt文件并把他们拼接起来写入到all.txt文件中
find . -type f -name "*.txt" -exec cat {} \;> all.txt
(4)将30天前的.log文件移动到old目录中
find . -type f -name "*.log" -mtime +30 -exec cp {} old \;
(5)找出当前目录下的所有.txt文件并以“File:文件名”的形式打印出来
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
(6)因为单行命令中-exec参数中无法使用多个命令,以下方法可以在实现-exec之后接受多条命令
-exec ./text.sh {} \;
搜索但跳出指定的目录
查找当前目录或者子目录下所有的.txt文件,但是跳过子目录sk
find . -path "./sk" -prune -o -name "*.txt" -print
要列出所有长度为0的文件
find . -empty
2、whereis命令
whereis命令是用来定位指令的二进制程序、源程序文件和man手册页等相关文件的路径。
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。
如果省略参数,则返回所有信息。
和find相比whereis查找的速度非常快,这是因为Linux系统会将系统中的所有文件都记录在一个数据库文件中,当使用whereis
和下面介绍的locate时,会从数据库中查找数据,而不是像find那样,通过遍历磁盘来查找,效率自然高,但是数据库文件并不是
实时更新,默认情况下一周更新一次,因此,我们在使用为whereis和locate查找文件时,有时会找到已经被删除的数据,或者
刚刚建立的文件无法找到,原因就是数据库文件没有被更新。
语法
whereis(选项)(参数)
选项
-b:只查找二进制文件。
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名钱的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>:只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。
参数
指令名:要查找的二进制程序、源文件和man手册页的指令名。
实例
将相关文件都查找出来
whereis tomcat
whereis svn 如果没有安装,则找不出来
只将二进制文件查找出来
whereis -b nginx
只将说明文件查找出来
whereis -m nginx
只将原始代码文件查找出来
whereis -s nginx
3、which命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里面查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
语法
which(选项)(参数)
选项
-n<文件名长度>:指定文件名长度,指定的长度必须大于等于所有文件中最长的文件名;
-p<文件名长度>:与-n参数相同,但此处包含的文件名长度包含了文件的路径;
-w:指定输出时栏位的宽度;
-V:显示版本信息;
参数
指令名:指令名列表。
实例
查找文件,显示命令路径:
which pwd
which adduser
说明:which是根据使用者所配置的PATH变量内的目录去搜索可运行档的!所以不同的PATH配置内容找到的命令当然不一样的!
文件查找和比较命令 来自: http://man.linuxde.net/find的更多相关文章
- Linux输入输出重定向和文件查找值grep命令
Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...
- shell文件查找和压缩命令
locate命令 1.locate filename 模糊匹配 只要文件名中包含关键字即可 非实时查找,速度比find快. 依靠索引数据库 /var/lib/mlocate/m ...
- 3.shell编程-文件查找之find命令
3.1.语法格式 find [路劲][选项][操作] 选项参数对照表 3.2.-name 查找/etc/目录下以.conf结尾的文件 find /etc/ -name "*.conf&quo ...
- setfacl命令 来自: http://man.linuxde.net/setfacl
常用选项##### <pre>-b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留. -k,--remove-default:删除缺省的 ...
- dstat命令 来自: http://man.linuxde.net/dstat
来自: http://man.linuxde.net/dstat
- shell脚本--文件查找之find命令
首先是通过文件名称来查找,需要使用一个-name参数. 查询以 .txt结尾的文件,和以 t 开头的文件: ubuntu@ubuntu:~/test$ ls one.txt three.txt tw ...
- Linux下的文件查找类命令(转载)
如何快速有效的定位文件系统内所需要查找的文件呢?Linux为我们提供了一些文件查找类的命令,我们需要掌握以下几个命令: http://blog.csdn.net/sailor201211/articl ...
- Linux学习之路——文件查找:find
使用权限:所有角色 用法:find [ options ] [ expression ]( find path -expression [ -print ] [ -exec | -ok command ...
- Linux基础文件查找
一.文件查找 (一).命令文件 [root@linux ~]# chich ls //从PATH环境变量 [root@linux ~]# chereis vim [root@linux ~]# ech ...
随机推荐
- Excel 帮助类
using System; using System.Collections.Generic; using System.Data; using System.Drawing; using Syste ...
- 转 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
上周为360全景项目引入了图片缓存模块.因为是在Android4.0平台以上运作,出于惯性,都会在设计之前查阅相关资料,尽量避免拿一些以前2.3平台积累的经验来进行类比处理.开发文档中有一个 Bitm ...
- fiddler2 中文乱码问题
打开注册表编辑器,找到HKCU\Software\Microsoft\Fiddler2\,在里面添加一个字符串值,名叫HeaderEncoding,值设置为默认编码.建议设成GB18030.然后要记得 ...
- Sybase数据库的分页功能
项目中需要用到Sybase数据库的分页功能,想尽各种办法都没有成功,最后用如下的存储过程成功实现功能,记录备忘. ),@start int, @pageSize int as begin declar ...
- mysql触发器的使用
环境情况: 表1:residential_building,住宅楼表:id,community(所属社区),countFloor(楼层数),countUnit(单元数),countHomesInUni ...
- 《accelerated c++》第九章---设计类
本章简单介绍了类的设计,但是包含了一些好的设计原则. 1一些通用的设计原则 (1)一个函数是否设计成成员函数的原则:如果这个函数改变对象的状态,那么这个函数就应该成为这个对象的成员. (2)对于内置类 ...
- Task 编程中的异常处理
在 .Net 开发中, 使用 Task . Task<T> 进行异步编程是非常方便的, 但是在处理 Task 产生的异常时, 需要注意一个问题, 比如下面的代码: ? 1 2 3 4 5 ...
- Delphi 的绘图功能[10] - TFONT 类
Delphi 的绘图功能[10] - TFONT 类 ;DEFAULT_CHARSET = ;SYMBOL_CHARSET = ;SHIFTJIS_CHARSET = ;HAN ...
- FIR数字滤波器的设计要点
源:http://blog.sina.com.cn/s/blog_493520900101gt0a.html FIR数字滤波器的设计要点
- PAT (Advanced Level) 1029. Median (25)
scanf读入居然会超时...用了一下输入挂才AC... #include<cstdio> #include<cstring> #include<cmath> #i ...