Linux:find命令

发布时间 2023-08-10 18:19:27作者: ShineLe

 

1、前言

从各个维度(类型、时间、权限、大小……)查找文件

2、用法

find 路径 选项 动作

3、选项

选项

说明

时间

①内容修改时间(modification time,mtime)

文件内容变更时,会更新该时间

②状态修改时间(status time,ctime)

文件状态变更(权限、属性……)时,会更新该时间

③访问时间(access time,atime)

每当读取(cat)时,就会更新该时间

-atime n、-n、+n 访问时间
 -ctime n、-n、+n 状态修改时间

-mtime n

-mtime -n

-mtime +n

内容变更

n:n天之前的一天内

+n:n天之前

-n:n天前到现在

-newer file

比file新

用户、组名 

-uid n UID 
-gid n  GID 
-user name  用户名 
-group name  组名 
-nouser  不属于任何人 
-nogroup  不属于任何组 

权限  

-name filename 文件名(可正则) 
 -size [+-]SIZE 比SIZE大(+)或小(-),比50KB大--size +50K 
 -type TYPE  文件类型:f b c d l s p
 -perm mode  权限刚好等于mode,mode为4位的权限数字
 -perm -mode 权限涵盖mode 
 -perm /mode 包含任一mode的权限 

例子

日期

#将24 小时内有更动过内容 (mtime) 的文件列出
find / -mtime 0
#0 代表目前的时间

#三天前的 24 小时内
find / -mtime 3 

文件日期比 /etc/passwdfind /etc -newer /etc/passwd

用户/组

#/home 下属于 dmtsai 的文件
find /home -user dmtsai

#搜寻系统中不属于任何人的文件
[root@study ~]# find / -nouser

权限

#档名为 passwd
find / -name passwd

#包含了 passwd 关键词的文件
find / -name "*passwd*"


文件类型为 Socket
find /run -type s

#含有 SGID 或 SUID 或 SBIT 的属性
find / -perm /7000
#7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出
#-7000 表示要同时含有 ---s--s--t 的所有三个权限。
#只需要任意一个,就是 /7000

 

4、动作

  • -exec 指令:使用别的指令处理搜寻到的结果
  • -print:默认,将结果打印

例子

#将上个范例找到的文件使用 ls -l 列出来
find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
#-exec 后面的 ls -l 就是额外的指令,指令不支持命令别名,所以仅能使用 ls -l 不可以使用 ll

5、多条件查找

find 路径 选项1 -a或-o 选项2 动作

#选项1 -a或-o 选项2
#-a表示and -o表示or
find /home -name '1*' -a -type f