find命令

author author     2022-09-03     707

关键词:

find命令:

find - search for files in a directory hierarchy

find [OPTIONS...] [查找路径] [查找条件] [处理动作]

查找路径:默认为当前工作目录,可以指定具体的目录路径;

查找条件:进行本次搜索的标准,可以是文件名、文件大小、文件类型、文件权限等等;默认是指定目录中的所有文件;

处理动作:对于符合条件的文件进行某个处理操作;默认将查找结果输出到显示器;


根据文件名查找:

-name 文件名称,支持使用Globbing,(*, ?, [], [^]),根据关键字查找

例:[[email protected] test]# find . -name "*.log" 

         ./log_link.log

         ./log2014.log

-iname 文件名称,忽略字母大小写,支持使用Globbing,(*, ?, [], [^])

例:find / -iname  qin


根据文件的inode编号查找:

-inum inode编号:通过给定的inode编号查找对应的文件名及路径;

-samefile name:通过给定的文件名查找对应的inode编号,进而确定所有具有该inode编号的文件名及路径;

-links n:查找链接数为n的所有文件;


根据正则表达式查找:

-regex pattern:以pattern匹配整个文件路径字符串,而不仅仅是给定文件的名称;


根据文件的属主和属组进行查找:

-user uname:根据属主为指定用户的用户名进行查找

-uid UID:根据属主为某个UID进行查找

-group gname:

-gid GID:


-nogroup:在文件的属组上没有组对应的组名;

-nouser:在文件的属主上没有用户对应的用户名;


根据文件的类型查找:

-type 文件类型:

b:块设备

c:字符设备

d:目录文件

f:普通文件

l:符号链接文件

p:管道文件

s:套接字文件

-xtype 文件类型:符号链接文件的匹配需要配合其他的选项;


根据时间戳进行查找:

以天为单位:

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

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

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

n:[n,n+1)

+n:[n+1,+∞)

-n:[now,n)

以分钟为单位:

-amin [+|-]n

-cmin [+|-]n

-mmin [+|-]n


例子:查找/etc目录下最近一周内内容修改过且不属于root及suse用户的文件;

         find /etc  -ctime -7 -a -user root -a -user suse

例:在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:

           find logs -type f -mtime +5 -exec    -ok    rm {} ; 


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

-size [+|-]n[cwbkMG]

n:(n-1,n]

-n:[0,n-1]

+n:(n,+∞)


例子:

find -size +2k

当前目录下所有大于2KB的文件;

find -size 2k

当前目录下所有1KB-2KB之间的文件;

find -size -2k

当前目录下所有小于1KB的文件;


组合条件:

-a:逻辑与,默认可以省略;

-o:逻辑或

-not, !:逻辑非

例:查找/usr目录下不属于root、bin、centos等用户的文件;

           find  /usr -not -user root -a -not -user bin -a -not -user centos


逻辑组合条件遵循德摩根定律:

非(A 与 B) == 非A 或 非B

非(A 或 B) == 非A 与 非B


根据权限查找:

-perm [/|-]mode

mode:精确匹配指定的权限

/mode:隐含了逻辑或的关系,任何一个权限位的权限中只要能有一个权限匹配,即可满足条件;

-mode:隐含了逻辑与的关系,每一个权限位的权限中都必须同时包含指定权限位,才能满足条件;

例:查找/etc/rc.d/init.d目录下,所有用户都有执行权限并且其他用户有写权限的文件;

         find /etc/rc.d/init.d -prem /111 -a  -perm -002


所有都有 取反 任意一个没有 

! ( a与b与c ) = !a 或 !b 或 !c

所有都没有 取反 任意一个有

! ( !a与!b与!c ) = a 或 b 或 c


处理动作:

-print:输出到显示屏幕,默认的动作;

-ls:对与查找到的结果执行ls -li命令显示;

例:查找/etc目录下所有用户都没有写权限的文件,并显示出其详细信息;

     find /etc -not -perm /222 -ls

-exec COMMAND {} ;:

-ok COMMAND {} ;:

对于查找到的结果执行COMMAND命令;

区别:

-exec是非交互式的;

-ok是交互式的;

{}:占位符,用来引用被find命令查找到的所有的文件的路径信息;

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

          find  / -nouser -o nogroup -a -atime -30 -exec chown root:root {}


-exec和-ok的取代执行操作:

chmod a-r $(find -perm -444 -type f)

find -perm -444 -type f | xargs chmod a-r


注意:管道输送的是纯字符串信息,所以如果管道之后的命令不是处理字符串的命令,需要使用xargs命令将其转换成能够被后面命令处理的参数;

例:在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名 

  find /tmp  -name  "*.h"  | xargs  -n50  grep SYSCALL_VECTOR


find命令使用介绍

用于文件精确查找的命令find的使用介绍:find命令与locate相比,具有以下几个特点: 1.查找精度高,速度略慢; 2.在指定的位置进行文件名或文件属性的遍历扫描;强烈建议不对根目录进行find操作(耗时     长... 查看详情

find命令详解

...时间来了解一下。即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费... 查看详情

find命令

1.find命令find命令通过指定查询的条件和索引,把相符的文件或目录列出来。2.find命令的使用方法语法:find[路径][选项][索引]2.1根据文件名根据文件名查找文件,通配符需要用引号引起来。查找/tmp目录下wang开头的文件。find/tmp&nb... 查看详情

find命令使用范例

find命令的一般形式find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]find命令的常用形式可以简化为:find [path...] [expression] 查看详情

find命令

which搜索可执行命令的绝对路径whereislocateupdatedb更新数据库find格式find/指定目录/-name被搜索的文件名find/指定目录/-name“被搜索的文件名”或者单引号是指以文件名开头的文件find/指定目录/-typed搜索指定目录下所有的子目录find/指... 查看详情

find的8种常用命令

​find命令的基本信息如下:命令名称:find。英文原意:searchforfilesinadirectoryhierarchy.所在路径:/bin/find。执行权限:所有用户。功能描述:在目录中查找文件。命令格式find搜索路径[选项]搜索内容​find是比较特殊的命令,它有两... 查看详情

find命令与locate命令的区别

find命令与locate命令都是文件搜索命令,换句话说都是根据文件名搜索文件。find命令格式:find文件名locate命令格式:locate文件名注意:我们在日常工作中最常用的是locate命令,因为locate命令是在数据库中搜索文件名,效率更高,... 查看详情

find命令

find命令:searchforfilesinadirectoryhierarchy搜索指定目录中的文件语法:find[-H][-L][-P][-Ddebugopts][-Olevel][path...][expression]find  path  -option  [  -print]  [-e 查看详情

find命令详解(代码片段)

find相关命令:which,whereis,locatefind查找目录和文件find路径-命令参数[输出形式]参数说明:路径:告诉find在哪儿去找你要的东西,命令参数:参数很多下面会说到输出形式:输出形式很多,-print,-printf,-print0,-exec,-ok,-ls反正很多自己... 查看详情

find命令讲解

  Linux下的find命令用来在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效。    需要注意... 查看详情

find命令文件后缀名

一、find命令find 在指定目录下查找文件如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找。find路径选项-name文件名[[email protected]~]#find/etc/-name"sshd_config"#在/etc/目录下查找文件名为“sshd_config”的文件/etc/... 查看详情

find命令

find命令find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显... 查看详情

find命令参数大全

Linux中find常见用法示例·find  path  -option  [  -print]  [-exec  -ok  command]  {};find命令的参数;pathname:find命令所查找的目录路径。例如用.来表示当前 查看详情

每天一个linux命令(21):find命令之xargs

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“... 查看详情

find命令

Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有... 查看详情

find命令文件后缀名

一、find命令1、find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全... 查看详情

每天一个linux命令(19):find命令概览

Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有... 查看详情

每天一个linux命令(19):find命令概览

Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有... 查看详情