linux find命令详解,linux搜文件命令find

2022年 10月 20日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

find命令是一种精确查找工具,可以查找精确查找文件的位置,单相对于locate命令的模糊查找来说,速度要慢了许多。

find - search for files in a directory hierarchy

find [path...] [expression]

path:是指文件的路径,比如/var,/etc,/tmp等工作目录;

expression:

选项:比如-user,-root,-size,-perm

条件:本次查找的标准,可以是文件名,可以是文件大小,可以是文件的权限信息,可以是时间戳等等。

处理动作:默认是-print输出,可以是-ls 显示文件的具体属性信息,也可以是进行某种操作;

expression:

根据文件名查找:

-name pattern:根据文件名查找,支持使用、Globbing字符查找(*,[^],[],)等

-iname pattern:忽略文件名的大小写进行查找

-samefile pattern:根据指定的文件名,查找其他硬链接的文件的路径;

根据文件的inode号查找:

-inum n:

-links n:查找硬连接数为"n"的文件;

-regex pattern:

-iregex pattern:

根据文件所有权进行查找:

-user uname:

-uid UID:就是根据用户名和/或用户ID,查找属主为这个用户账户的所有文件;

-group gname:

-gid GID:就是根据组名和/或组ID,查找属组为这个组账户的所有文件;

-nogroup:在文件的所有权的权限位上,没有属组名称仅显示属组ID的文件;

-nouser:在文件的所有权的权限位上,没有属主名称仅显示属主ID的文件;

根据文件的类型:

-type c:

c表示文件类型的单字符描述符,其中包括:

b:块设备

c:字符设备

d:目录

f:普通文件

l:符号链接

p:管道

s:套接字

-xtype

符号连接文件的查找结果需要其他选择的配合才能找到,否则查找的是被链接的原文件;

根据时间戳进行查找:

以天为时间单位进行查找:

-atime [+|-]n:根据访问时间戳进行查找

-ctime [+|-]n:根据改变时间戳进行查找

-mtime [+|-]n:根据修改时间戳进行查找

n:[n,n+1)

+n:[n+1,+oo)

-n:[now,n)

用简单的语言来说,就是下图的结果。

以分钟为单位进行查找:

amin [+|-]n:

cmin [+|-]n:

mmin [+|-]n:

根据文件的大小进行查找:

-size n[cwbkMG]

n:(n-1,n]

+n:[n,+oo)

-n:[0,n-1]

逻辑运算操作符组合前面的条件进行复杂逻辑的判断:

-a | -and:逻辑与运算,默认就是该逻辑运算,可省略;

-o | -or:逻辑或运算;

-not | !:逻辑非运算;

德默根定律依然生效;A&B=!A|!B

根据权限来查找:

-perm [/|-]mode:

mode:精确权限匹配,意思是查找必须与指定的权限位完全匹配的文件;

/mode:任何一个权限位的权限中只要有一个去权限能够满足条件,即为匹配成功,就可以将之作为查找结果;隐含的逻辑或关系;

-mode:每一个权限位的权限中都必须同时包含指定的权限位,才能满足条件,才算匹配成功,将之作为查找结果;隐含了逻辑与关系;

真 取反 假

假 取反 真

全部为真 取反 任何一个为假

全部为假 取反 任何一个为真

处理动作:

-print:将符合条件的查找结果直接输出到标准输出;默认动作;

-ls:将符合条件的查找结果以"ls -dils"命令的执行结果进行显示;

-exec command {} ;

-ok command {} ;

对于符合条件的查找结果按照"command"命令再执行一遍,{}为占位符,其含义是:用来引用find命令查找结果中的各个文件的路径信息;

ex:

查找当前系统上没有属主或属组,且最近一个月内曾被访问过的文件,并将其属主属组均修改为root;

~]# find -nouser -o -nogroup -a -atime 30 -exec chown root,root {}

注意:

-exec是非交互式的;-ok是交互式的;

很多命令是不能放置于管道后面使用的;因为管道输送的是纯字符串信息,因此管道后面的命令一般来讲都必须是处理字符串的命令;通常,可以使用xarge命令将其转换成能够被管道后面的命令处理的参数;

转载于:https://blog.51cto.com/liujingyu/2088565

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: