linux_find文件查找命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux_find文件查找命令相关的知识,希望对你有一定的参考价值。

文件查找:

locate,非实时查找,在临时数据库里进行查找,模糊匹配。

[[email protected] ~]# locate passwd 查找当前系统里有没有passwd这个文件

updatede 手动生成临时数据库

优势:速度快,占用资源少

 

find:实时查找,精确查找,遍历指定目录中的所有文件,速度慢。支持众多查找标准。支持正则表达式

格式:find 查找路径查找标准 查找到以后的处理动作

省略查找路径,就默认为当前目录

省略查找标准,默认为指定路径下的所有文件

处理动作:默认为显示

 

匹配标准:-name 根据文件名精确查找

 [[email protected]~]# find /etc -name  ‘passwd‘ 查找etc下是否有passwd这个文件

  文件名通配:

   

匹配文件名中的任何单个字符。

[...]   匹配[ ]中所包含的任何字符。

[!...]   匹配[ ]中非感叹号!之后的字符。

*   匹配文件名中的任何字符串,包括空字符串。

如:

5           5开头的所有字符串

5           5结尾的所有字符串

5        5为倒数第二个字符的字符串

[09]    所有以数字的字符

[1,2]         1或者2

[!0-9]        不是数字的字符

 

[[email protected] ~]# find /etc -name ‘passwd*‘ 查找etcpasswd开头的所有文件

[[email protected] ~]# find /etc -name ‘*passwd‘ 查找etcpasswd结尾的所有文件

[[email protected] ~]# find /etc -name ‘*passwd*‘查找etc下名字包含passwd的所有文件

-iname  文件名匹配不区分大小写

-regex  PATTERN基于正则表达式进行文件名匹配

-user 根据文件的属主进行进行查找

[[email protected] ~]# find /tmp -user root 查找tmp下属于root的文件

 

-group 根据属组进行查找

-uid根据uid查找

-gid 根据gid查找

-nouser 查找没有属主的文件 

[[email protected] ~]# find /tmp –nouser 查找 tmp下没有属主的文件

-nogroup 查找没有属组的文件

-type根据文件类型查找

  f 普通文件

d 目录

c字符设备

b 块设备

l 链接文件

p 管道设备

s套接字文件

[[email protected] ~]# find /tmp -type d 查找tmp下的目录

[[email protected] ~]# find /tmp -type s查找tmp下的套接字文件

-size 指定查找文件的大小

[+|-]#K

#M

[[email protected] ~]# find /etc/ -size 1M –ls 查找etc1M或接近1M的文件。并执行ls

[[email protected] ~]# find /etc/ -size -1M –ls 查找etc 所有小于1M的文件并执行ls

[[email protected] ~]# find /etc/ -size +1M –ls查找etc 所有大于1M的文件并执行ls

#G

组合条件:

-a

-o

-not

默认是与操作

[[email protected] ~]# find /tmp -nouser –a -type d  查找tmp下没有属主并且文件类型为目录的文件

[[email protected] ~]# find /tmp -nouser -o -type d  查找tmp下没有属主或者文件类型为目录的文件

[[email protected] ~]# find /tmp -not -type d 查找tmp下非目录的文件

 

1.查找tmp不是目录或者不是套接字文件的文件

[[email protected] ~]# find /tmp -not -type  d -o -not -type s

 

2.查找当前文件属主下既不是user1又不是user2的文件

[[email protected] ~]# find ./ -not -user user1 -a -not -user user2

[[email protected] ~]# find ./ -not \( -user user2 -o  -user user1 \)

 

3.查找当前目录下属主不是user1或者类型不是目录的文件

[[email protected] tmp]# find ./ -not -user user1 -o -not -type d

[[email protected] tmp]# find ./ -not \( -user user1 -a -not -type d \)

 

 

-mtime 最近一次的创建时间,多少天

-ctime  最近一次的改变时间

-atime  最近一次的访问时间

   [+|-]#      +表示至少几天没访问

              -5表示5天之内没有访问过

                   5表示刚好5天没有访问过

-mmin  多少分钟

-cmin

-amin

     [+|-]#

 

[[email protected]~]# find /tmp  -amin +5 查找tmp下至少5分钟没有访问过的文件,或者说5分钟之前访问过的文件

 

 

[[email protected] ~]# find /tmp -atime +7 查找tmp下至少7天没有访问过的文件

 

 

-perm MODE 根据文件权限查找,默认为精确匹配,9位权限都必须匹配

[[email protected]~]# find /tmp -perm 755  -ls 查找tmp下文件权限为755的文件并显示

 

-perm –MODE包含匹配9位权限 ,列如查找644权限的文件,755也会显示,只要权限包含有6449位权限都能被查找

 

-perm /MODE9位权限中有1位匹配就行

[[email protected]~]# find /tmp -perm /755  -ls  查找 tmp9个权限中有一个权限能匹配到的文件

 

查找当前文件下 其他用户有执行权限的文件

[[email protected]~]# find ./ -perm -001  

 

 

动作:

 -print:显示

 -ls:类似类似ls- l的形式显示每个匹配到的详细文件

 -ok COMMAND {} \;  -ok会让用户确认每一个操作    {}表示引用查找到的文件

 -exec COMMAND {} \;

[[email protected]~]# find ./ -perm -006 -exec chmod o-w {} \; 查找当前目录下其他用户有读和写权限的文件,并把写权限去掉

 

[[email protected]~]# find ./ -type d  -exec chmod +x {} \;找到当前文件下为目录的文件并把属主,属组合其他用户 都加上执行权限

 

[[email protected]~]# find ./ -perm -020 -exec mv {} {}.new \;查找当前文件下属组有写权限的文件并把其名字改成原名字加.new

 

 

查找当前目录下文件名为.sh结尾并且所有用户都有执行权限的文件,然后把其他用户的执行权限删除

[[email protected]~]# find ./ -name "*.sh" -a -perm -111 -exec chmod o-x  {} \;

 

 

 

1、  查找/var目录下属主为root并且属组为mail的所有文件

[[email protected] ~]# find /var -user‘root‘ -a -group ‘mail‘

 

2、  查找/usr目录下不属于root,bin,或student的文件

[[email protected] ~]# find /usr -not-user ‘root‘ -a -not -user ‘bin‘ -a -not -user ‘student‘

 

3、  查找/etc目录下最近一周内内容修改过且不属于rootstudent用户的文件

[[email protected] ~]# find / -ctime -7-a -not -user  ‘root‘ -a -not -user‘student‘

 

4、  查找当前系统上没有属主或者属组且最近1天内容曾被访问过的文件,并将其属组属主改为root

[[email protected] ~]# find / \( -nouser-o -nogroup \) -a -atime -1 -exec chown root:root {} \;

5、  查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefile文件中

[[email protected] ~]# find /etc -size+1M >> /tmp/etc.largefiles

[[email protected] tmp]# find /etc -size+1M -exec echo {} >> /tmp/etc.largefiles \;

[[email protected] tmp]# find /etc -size+1M | xargs echo > /tmp/etc.largefiles

 

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

       [[email protected] ~]# find /etc -not -perm /222 –ls

xargs: 不用占位符{}  ,也不需要\ 。但是需要管道|放到xargs前面

 

 

                                                         


本文出自 “linux运维” 博客,谢绝转载!

以上是关于linux_find文件查找命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux下find命令和grep命令查找文件

如何使用find命令查找文件?

linux下的find文件查找命令与grep文件内容查找命令

【笔记】grep 命令 - 查找文件内容

linux查找文件路径的命令,Linux查找文件路径

如何使用find命令查找文件?