Linux 强大的文件查找工具之find

简介:

一切皆文件”是 Linux的哲学思想之一, 这条命令可以统计当前linux系统中有多少文件ls -R |wc -l  &建议放在后台执行,因为你的系统文件很多则会消耗很多时间,你可以看见这个结果是庞大的,linux的系统中的文件实在是太多了,怎么样才能快速而且精确的在linux系统找出你想要的文件呢?Linux find命令提供了很强大的功能,学好find命令的使用,可以给你节省大量花费在找文件的时间。


find的基本语法格式:

        find  [查找位置]  [查找标准]  [处理动作]

查找位置:默认为当前目录,可以指定多个目录,多个之间用空格

查找标准:默认为查找指定目录下的所有文件

处理动作:显示到标准输出,默认为print


剖析find的查找标准可分为哪些:

  1)文件名

 -name  "文件名称" : 根据文件名查找,支持glob

112613593.png

-iname "文件名称",根据文件名查找,不区分大小写

112736368.png


2)文件的属主、属组

     -user     "USERNAME"    :    根据属主查找

     -group    "GROUP"         :    根据属组查找

     -uid         "UID"               :    根据UID查找

     -gid      "GID"                  :    根据GID查找

     -nouser                           :    查找没有属主的文件

     -nogroup                         :   查找没有属组的文件

113036813.png



1
2
3
4
5
6
7
8
[root@Redhat6 /] # find / -nouser -nogroup  #没有属主,也没有属组
/tmp/user1dir
[root@Redhat6 /] # ls -ld /tmp/user1dir/  #验证查找的文件是否符合要求,文件没有用户表示属主和属组,但会以ID号来表示
drwxrwxr-x 2 500 500 4096 Jul 23 10:36  /tmp/user1dir/
[root@Redhat6 /] # find / -user root -gid 500  #查找用户为root,gid为500
/tmp/user1dir
[root@Redhat6 /] # ls -ld /tmp/user1dir/
drwxrwxr-x 2 root 500 4096 Jul 23 10:36  /tmp/user1dir/

3)文件的类型

    -type

           f   文件

           d  目录

           b  块设备

           c   字符设备

           l    符合链接文件

           p  命令管道文件

           s  套接字文件

113633257.png

4)文件的大小

           -size

#[k|M|G]:#表示数字,匹配的时候为模糊匹配

                +#[k|M|G]:+#表示大于,匹配的结果大于#

                -#[k|M|G] :-#表示小于,匹配的结果是小于#

120502830.png

121148430.png

5)文件修改时间

           -atime   [+|-]#   :访问时间,默认为天#表示#天的这个时间点,+#表示至少有#天没访问 ,  -#表示#天之内没访问

           -mtime [+|-]#   :  修改时间,#表示#天的这个时间点没有被修改,+#表示至少有#天没有修改 ,  -#表示#天之内没有修改

           -ctime   [+|-]#   : 改变时间,#表示#天的这个时间点没有被改变+#表示至少有#没有被改变 ,  -#表示#天之内没有被改变

           -amin    [+|-]#    : 时间为分钟,#表示#分钟的这个时间点没有被访问+#表示至少有#分钟有被访问 ,  -#表示#分钟之内没访问

           -mmin  [+|-]#    :时间为分钟,#表示#分钟的这个时间点没有被修改+#表示至少有#分钟没有被修改 ,  -#表示#分钟之内没有被修改

           -cmin    [+|-]#    :时间为分钟,#表示#分钟这个时间点没有被改变,+#表示至少有#分钟没有被改变 ,  -#表示#分钟之内没有被改变

122843920.png

124303783.png

6)文件权限

          -perm  [+|-] MODE  

                 不带[+|-]表示精确权限匹配,

                 +表示任何一类用户的任何一位权限匹配

                 - 表示每类用户的每位权限都匹配


135422987.png

135758724.png

141955529.png

142435106.png


find在查找标准时支持组合查找条件,在使用组合查找条件时要考虑优先级,优先级为顺序为非→与→或,在组合参数是想改变优先级可以用()来提升优先级。

           -a    (and)   默认是与

           -o    (or)      

           -not,!           

find的处理动作可以是:

       -print   默认为输出

       -ls          显示查找到的文件的详细信息

-ok   COMMAND \;   要确认

       -exec    COMMAND  \;     其中COMMAND中有对查找到的文件进行操作时,用{}来替代查找到的     文件,\;表示使用-exec的结束符,是固定格式; 使用-exec来出来查找的文件时,还可以通过管道送给xargs命令来解决,xargs在执行命令时,如果有对文件进行操作则用-i选项,{}也表示要操作的文件。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1、查找 /var 目录下属主为root并且属组为mail的所有文件;
find  /var  -user root -group mail
2、查找 /usr 目录下不属于root,bin,或student的文件;
find  /usr  -not \( -user root -o -user bin -o -user student \)
find  /usr  -not -user root -a -not -user bin -a -not -user student
3、查找 /etc 目录下最近一周内内容修改过且不属于root及student用户的文件;
find  /etc  -mtime -7 -a -not -user root -a -not -user student
find  /etc  -mtime -7 -a -not \( -user root -o -user student \)
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find  / \( -nouser -o -nogroup \) -a -atime -1 - exec  chown  root:root {} \;
5、查找 /etc 目录下大于1M的文件,并将其文件名写入 /tmp/etc .largefiles文件中;
find  /etc  -size +1M - exec  echo  {} >>  /tmp/etc .largefiles \;
find  /etc  -size +1M >>  /tmp/etc .largefiles
6、查找 /etc 目录下所有用户都没有写权限的文件,显示出其详细信息;
find  /etc  -not -perm +222
7、删除类型不是目录,而且没有属主的文件;
find  / -not - type  d -a -nouser - exec  rm  -f {} \;
find  / -not - type  d -a -nouser |  xargs  -i  rm  -f {}










本文转自 jie783213507 51CTO博客,原文链接:http://blog.51cto.com/litaotao/1261246,如需转载请自行联系原作者
目录
相关文章
|
12天前
|
Linux
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
58 2
|
6天前
|
Linux 应用服务中间件 nginx
|
12天前
|
Linux 开发工具
Linux查看已经安装软件的版本,安装软件的路径,以及dpkg、aptitude、apt-get、apt工具的使用
Linux查看已经安装软件的版本,安装软件的路径,以及dpkg、aptitude、apt-get、apt工具的使用
20 2
Linux查看已经安装软件的版本,安装软件的路径,以及dpkg、aptitude、apt-get、apt工具的使用
|
13天前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
20 1
Linux 服务器下载百度网盘文件
|
6天前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。
|
6天前
|
存储 Ubuntu Linux
linux中的find 命令详细用法
本文介绍了如何将 `find` 命令与 `exec` 结合使用,通过具体示例展示了多种应用场景,如显示文件属性、重命名文件、收集文件大小、删除特定文件、执行工具、更改文件所有权和权限、收集 MD5 值等。文章还探讨了 `{} \;` 和 `{} +` 的区别,并演示了如何结合 `grep` 命令进行内容搜索。最后,介绍了如何在一个 `find` 命令中使用多个 `exec` 命令。这为 Linux 用户提供了强大的文件管理和自动化工具。
|
8天前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
20 2
|
12天前
|
存储 缓存 监控
Linux性能分析工具-perf并生成火焰图
Linux性能分析工具-perf并生成火焰图
|
15天前
|
Linux
linux 删除乱码文件名的文件
【8月更文挑战第26天】当遇到文件名显示为乱码,导致无法正常通过键盘输入文件名进行删除操作时,可以利用鼠标的复制功能配合`rm`命令实现删除。对于文件夹的删除,可使用`rm -rf 目录名`。然而,有时这种方式仍无法删除某些特殊乱码文件,这时可以通过获取文件的i节点号(使用`ls -i`或`ll -i`命令查看)并执行`find -inum [节点号] -delete`来进行删除。这种方法特别适用于处理那些因文件名问题而难以删除的情况。
61 2
|
16天前
|
JSON Linux 网络安全
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
下一篇
DDNS