find命令详解

Linux下的find命令的查询功能十分强大,下面详细介绍find的大多数用法:
工作方式:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。

1.根据文件时间搜索

atime(access time,访问时间):即上次访问这个文件的时间

mtime(modification time,修改时间):即文件内容上次发生改变的时间

ctime(change time,改变时间):文件属性(比如权限)修改的时间,一般mtime改变时ctime也会改变

-atime、-mtime、-ctime都可作为find的时间参数,它们带上+n或-n表示n天之前或n天之内被更动过的档案档名。

示例:找出系统上3天内有更动内容(mtime)的档案档名:

find /var -mtime -3

刚好在3天前有更动内容的档案档名:

find /var -mtime 3

大于3天前有更动内容的档案档名:

find /var -mtime +3

这些的时间是基于天的,还有基于分钟的:

-amin、-mmin、-cmin

用法与上面相同。

find的另一个漂亮的特性是-newer参数,我们可以指定一个用于比较时间戳的参考文件,然后找出比参考文件更新的所有文件。

2.根据使用者或者组名搜索

-user/-group:按照文件所属的主人/组查找文件

-nouser/-nogroup:寻找档案的拥有者/群组不存在/etc/passwd或/etc/group的人或档案

示例:查找/home下属于hm的档案

find /home -user hm

查找系统中不属于任何人的档案

find / -nouser

3.根据档案权限及名称搜索

-name filename:查找文件名为filename的文件

-perm mode:查找文件权限为mode的文件,mode为类似chmod的属性值

示例:查找权限为644的文件

find . -perm 644

4.根据文件类型搜索

linux下的文件类型:
普通文件      : f
符号文件      : l
目录             : d
字符设备      : c
块设备          : b
套接字          : s
Fifo(管道文件) : p

-type TYPE:查找文件名的类型为TYPE的

如:

find . -type f

5.根据文件大小搜素

-size[+ -] SIZE:搜索比SIZE要大(+)或小(-)的文件。

示例:查找比50KB要大的文件

find . -size +50k

除了k之外,还有其他文件大小单元
b——块(512字节)
c——字节
w——字
k——千字节
M——兆字节
G——吉字节

6.进行额外的动作

-exec:一直到 \; 是关键词,代表 find 额外动作的开始 (-exec) 到结束 (\:)

示例:查找根目录下大于555字节小于580字节的文件

  find /root -size -555c -size +580c -exec ls -ld {} \; 

7.否定参数

用" ! "作为否定参数

示例:搜索当前目录所有不以.txt结尾的文件

find . ! -name ".txt" 

8.find与xargs结合

xargs:将标准输入转换成命令行参数

示例:将匹配到的文件删除

find . -type f -name "*.txt" |xargs  -0 rm -f <span class="pln">   </span>

9.删除匹配的文件

-delete可以实现

find . -type f -name "*.swp" -delete

10.根据目录的深度搜索

-maxdepth/-mindepth:最大/最小深度限制,1表示只在当前目录,2表示向下两级等等

示例:1. 只列出当前目录下的所有普通文件

   2. 列出距当前目录至少两个子目录的所有文件
1. find . -maxdepth 1 -type f
2. find . -mindepth 2 -type f

你可能感兴趣的:(linux,find)