find命令是Linux系统管理者中最强工具之一。它根据用户特定表达式在目录结构特征中搜索文件和目录,并且可以对每一个相符的文件推行顾客特定操作过程。
您可以使用find
命令根据其管理员权限,类型,日期,所有权,规格等搜索文件和目录。它也可以与其他常用工具结合使用,例如grep
或sed
。
find
命令的一般语法形式是find [options] [path...] [expression]
。options
选项特点控制符号链接,调整选项和提高地处理。
path...
方式属性定义find
搜索文件的开端目录,你为find
特殊一个或多个逐渐目录。expression
表达式特点由选项,搜索方式及由运算符分隔姿势组成。
需要在目录中搜索文件,开启find
命令的消费者一定要对逐渐目录以及子目录具有加载管理员权限。
让我们看一下案例find -L /var/www -name "*.js"
。选项-L
告之find
命令跟随符号链接。
/var/www
是find命令搜索的开始目录。表达式-name "*.js
告之find
搜索以.js
结尾的文件JavaScript文件。
按名字搜索/搜索文件
依据名称搜索文件可能是find
命令的比较常见的操作方法。需要使用文件名搜索文件,请在要搜索的文件名后加上-name
选项。
例如,需要在/home/myfreax
目录中搜索名字叫做document.pdf
的文件,能用命令find /home/myfreax -type f -name document.pdf
。
find的-name
选项是区分大小写的,如果你需要运行不区分大小写的搜索,请将-name
选项更改为-iname
。find命令将匹配Document.pdf
,DOCUMENT.pdf
等。
find /home/myfreax -type f -iname document.pdf
按文件文件后缀名搜索文件
根据文件后缀名搜索文件与按名字搜索文件一样。例如,需要在/var/log/nginx
目录中搜索所有以.log.gz
结尾的文件,能用命令find /var/log/nginx -type f -name '*.log.gz'
。
值得一提的是,使用通配符时,尽量加单/冒号或是用反斜杠转义星号标识
*
,以避免shell描述它。
要搜索与正则匹配*.log.gz
不一致的全部文件,能用find命令的-not
选项。例如,要搜索所有未以*.log.gz
结尾的文件,您可以使用以下find命令。
find /var/log/nginx -type f -not -name '*.log.gz'
按类型搜索文件
有时您可能务必搜索特定文件类型,例如一般文件,目录或符号链接。在Linux中,一切都是文件,包括目录。
需要根据文件的类型搜索文件,挑选find的-type
选项特殊文件类型。下面我们列举Linux中所有文件的类型。
f
是完全文件。d
是目录。l
是符号链接。c
是字符设备。b
是块设备。p
是命名管道FIFO。s
是sockettcp协议。
例如,需要在各项任务目录中搜索所有目录,能用命令find . -type d
,这里.
表有目前目录,-type d
特殊文件类型是目录。
广泛案例采用的是chmod
命令将网站地址文件管理员权限递归算法更改为644
,目录管理员权限更改为755
:
find /var/www/my_website -type d -exec chmod 0755 {} ;
find /var/www/my_website -type f -exec chmod 0644 {} ;
按尺寸搜索文件
需要根据文件规格搜索文件,挑选find命令的-size
选项,之后特殊文件尺寸。您可以使用以下文件后缀名特殊文件规格。
如果你运用-size选项,但是为了特殊文件尺寸,find很有可能运用512字节作为规格进行文件的搜索。
b
是512字节。c
是字节。w
是两个字节。k
千字节即kb, M
是兆字节,即MB,G
是千兆字节便是GB。
例如命令find /tmp -type f -size 1024c
将在/tmp
目录中找到所有1024
字节的文件。
find
命令还允许您搜索超出或小于特殊大小的小文件。你可以运用加减符号和文件尺寸说明超出或者小于,
矩阵表示超出,-
减矩阵表示小于。
例如命令find . -type f -size -1M
,将在各项任务目录中搜索所有小于1MB
的文件。注意规格值之前就是指减号标识-
。
命令find . -type f -size 1M
将搜索规格超出1MB
的文件,注意规格值之前就是指加号标识
。
您甚至可以搜索规格范围内文件。以下find命令将在目前目录下搜索/搜索1MB
到和2MB
之间所有文件。
find . -type f -size 1M -size 21M
按日期搜索文件
find
命令还可以根据文件的后修改,访问或更改时间来搜索文件。与按尺寸搜索时一样,运用加号和减号说明超出或小于。
例如命令find /etc/dovecot/conf.d -name "*.conf" -mtime 5
。将搜索/etc/dovecot/conf.d
目录下以.conf
结尾并且在近日五天内早已被修改的所有文件。
除了运用24小时作为公司之外,你还可以使用min,小时,秒等有关部门作为搜索的前提。大伙儿将在这里例举这类选项。
-amin
说明文件最终访问时间,以min作为公司。-atime
说明最终访问时间,以24小时作为公司,即一天。这两个选项均表示在要求访问时间之内。
-cmin
说明文件最终更改时间,以min作为公司。-ctime
说明文件最终更改时间,而24小时作为公司,即一天。这两个选项均表示在要求最后更改时间之内。
-mmin
说明文件的后修改时间,以min作为公司。-mtime
说明文件的后修改时间,而24小时作为公司,即一天。这两个选项均表示在要求修改时间之内。
如果你需要特殊修改,访问或更改时间之外作为搜索规范。你可以运用find的-daystart
选项。如果它修改以上选项为时间之外。
那也是根据修改日期过滤文件的另一个案例。以下命令将例举/home
目录中30
多天之后修改的所有文件,包括30天。
find /home -mtime 30 -daystart
按管理员权限搜索文件
find的-perm
选项可让您根据文件管理员权限搜索文件。你可以运用文件管理权限标识方法,或者数据信息形式进行搜索。
大伙儿介绍你应用数据方法,因为标识方法也会显得更复杂,也并不有利于阅读。我们可以在数据信息方法前加上减号-
或斜线/
。
如果将斜线/
做为作为作为前缀,则至少是用户,组或其他人其中一个管理员权限位与文件匹配。如果将减号-
做为作为作为前缀,则文件的管理员权限位尽量全匹配。
find . -perm /444
find . -perm -664
按使用人搜索文件
find的-user
和-group
选项容许要搜索特殊顾客或组拥有的文件。例如命令find / -user myfreax
,很有可能搜索顾客myfreax
拥有的所有文件和目录。
这是一个真正例子。假设你需要搜索www-data
顾客拥有的所有文件,然后把匹配文件的所有权从www-data
更改为nginx
。
find / -user www-data -type f -exec chown nginx {} ;
搜索并删除文件
将-delete
选项附加到匹配表达式结尾。find很有可能删除所有相符的文件。
建议仅在确立结果与要删除的文件匹配时,运用-delete
选项。可以直接打印出相符的文件,接着再加上-delete
选项。需慎重运用-delete
选项。
对于目录的删除,find的--delete
选项仅有删除与rmdir
相同的空目录。例如,能从/var/log/
中删除所有以.temp
结尾的文件,你们可以运行以下find命令。
find /var/log/ -name `*.temp` -delete
结论
大伙儿为大家彰显了如何在各式各样选项和条件下运用find
命令。原文中理应让你对如何在Linux系统上搜索文件有大部分的认知。
您也可以访问find
手册页,并阅读find
命令的所有其他强悍功效。如有任何疑问或点评,请在下面。
