营业执照咨询电话24小时,win10最强优化软件,wordpress去除购物车图标,海外免费云服务器目录
一、find命令
二、find命令的语法
#xff08;一#xff09;语法格式
#xff08;二#xff09;选项
1、选项(option)介绍
2、控制符号链接的option
3、调试选项debugopts
4、优化选项
#xff08;三#xff09;表达式expression
1、选项options
2、测试…目录
一、find命令
二、find命令的语法
一语法格式
二选项
1、选项(option)介绍
2、控制符号链接的option
3、调试选项debugopts
4、优化选项
三表达式expression
1、选项options
2、测试 tests
3、动作actions
三、实际应用的例子
1、按名称查找文件
2、按文件类型查找
3、按文件大小查找
4、按文件修改时间查找
5、按文件权限查找
6、按文件所有者查找
7、组合条件查找
8、与grep, xargs等结合,在结果中筛选或执行命令
9、查找并执行命令
10、忽略或避免某些条件
12、递归查找 一、find命令 Linux的find命令是最重要和最常用的命令之一用于在目录树中查找文件和目录。它可以根据各种条件进行搜索包括文件名、权限、用户和组、文件类型、文件大小、日期和时间等。 同时也有一些组合应用可以方便进行各种操作。 很多文档都根据命令的语法来介绍要想完成一个具体的搜索任务还需要看每个命令找到对应的用法。 为了节省大家的时间本文简单介绍下find的语法以方便查询同时按照一些实际需要完成的任务来介绍find的一些用途。也就是根据具体的应用场景来使用find命令。
二、find命令的语法
一语法格式 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] 二选项
1、选项(option)介绍 表达式列表中的“选项”。这些选项控制find的行为但在最后一个路径名之后立即指定。五个“real”选项-H、-L、-P、-D和-O必须出现在第一个路径名之前如果有的话。双破折号--也可以用来表示任何剩余的参数都不是选项尽管如果在起始点列表中使用通配符则确保所有起始点都以“./”或“/”开头通常更安全。 2、控制符号链接的option -H、-L和-P选项控制符号链接的处理。后面的命令行参数将被视为文件名或要检查的目录直到第一个以“-”开头的参数或参数“”或“”。该参数和后面的任何参数自变量被认为是描述要搜索的内容的表达式。如果没有给出路径则使用当前目录。如果没有给出任何表达式而是使用表达式-print但无论如何您可能应该考虑使用-print0 3、调试选项debugopts 打印诊断信息这有助于诊断find为什么没有按您的意愿进行操作的问题。调试列表选项应以逗号分隔。在findutils的各个版本之间调试选项的兼容性并不能得到保证。对于完整的有效调试选项列表请参阅find-D帮助的输出。有效的调试选项包括帮助解释调试选项 tree 以原始和优化的形式显示表达式树。 stat 使用stat和lstat系统调用检查文件时打印消息。find程序尽量减少此类调用。 opt 打印与表达式树的优化有关的诊断信息请参阅-O选项。 rates 打印一个摘要指示每个谓词成功或失败的频率。 4、优化选项 -Olevel 启用查询优化。find程序对测试进行重新排序以加快执行速度同时保持整体效果也就是说具有副作用的谓词不会相对于彼此重新排序。优化级别有0123几个等级。 三表达式expression 表达式expression由1选项options影响整体操作而不是特定文件的处理并且总是返回true、2测试tests返回true或false值和3动作actions具有单向作用并返回true或false值组成所有这些都由运算符分隔。 1、选项options 所有选项始终返回true。除了-daystart、-follow和-regextype之外这些选项会影响所有测试包括在该选项之前指定的测试。这是因为在解析命令行时会处理选项而在检查文件之前测试不会执行任何操作。-daystart、-follow和-regextype选项在这方面有所不同仅对稍后出现在命令行中的测试有影响。因此为了清晰起见最好将它们放在表达式的开头。如果你不这样做就会发出警告。常用的有如下 -daystart -depth -follow -help -maxdepth -mindepth -mount -noleaf -version 2、测试 tests 一些测试例如-newerXY和-samefile允许在当前检查的文件和命令行上指定的某个参考文件之间进行比较。当使用这些测试时参考文件的解释由选项-H、-L和-P以及之前的任何后续选项决定但在解析命令行时只检查一次参考文件。如果无法检查引用文件例如stat2系统调用失败则会发出错误消息 find以非零状态退出。有如下常用的tests
n 查找比 n 大的。-n 查找比n 小的。n 查找刚好是n的-amin n查找在 n 分钟内被访问过的文件。-atime n查找在 n*24 小时内被访问过的文件。-cmin n查找在 n 分钟内状态发生变化的文件例如权限。-ctime n查找在 n*24 小时内状态发生变化的文件例如权限。-mmin n查找在 n 分钟内被修改过的文件。-mtime n查找在 n*24 小时内被修改过的文件。-name pattern按文件名查找支持使用通配符 * 和 ?。-type type 按文件类型查找可以是 f普通文件、d目录、l符号链接等。-size [-]size[cwbkMG] 按文件大小查找支持使用 或 - 表示大于或小于指定大小单位可以是 c字节、w字数、b块数、kKB、MMB或 GGB。-mtime days 按修改时间查找支持使用 或 - 表示在指定天数前或后days 是一个整数表示天数。-user username按文件所有者查找。-group groupname按文件所属组查找。 3、动作actions 常见的有如下 -delete -exec command -exec command {} -execdir -printf format -prune True; 三、实际应用的例子
1、按名称查找文件
1查找当前目录及其子目录下名为 example.txt 的文件 find . -name example.txt
2查找根目录/及其子目录下名为 example.txt 的文件 find / -name example.txt
3当前目录及其子目录下所有文件后缀为 .c 的文件列出来: find . -name *.c
2、按文件类型查找
1查找当前目录及其子目录下的所有普通文件 find . -type f
2查找当前目录及其子目录下的所有目录 find . -type d
3、按文件大小查找 查找大于 10MB 的文件 find . -size 10M
4、按文件修改时间查找 1查找在过去 7 天内修改过的文件 find . -mtime -7 2查找 /var/log/test 目录下在 7 天前修改过的文件 find /var/log/test -mtime 7
5、按文件权限查找 查找所有可执行文件 find . -executable
6、按文件所有者查找 查找所有属于用户 john 的文件 find . -user john
7、组合条件查找
1查找所有 .txt 扩展名且在过去 7 天内修改过的文件 find . -type f -name *.txt -mtime -7
2查找 /usr/local/log 目录中更改时间在 7 日以前的普通文件并在删除之前询问它们 find /usr/local/log -type f -mtime 7 -ok rm {} \; 8、与grep, xargs等结合,在结果中筛选或执行命令 1grep可以用来将 find 的输出作为参数再进行一次筛选例如查询所有 .cpp扩展名的文件同时文件名或者路径中带有“视频监控平台”的文件可以这样做 find . -name *.cpp | grep 视频监控平台 执行结果如下 2xargs 可以用来将 find 的输出作为参数传递给其他命令。例如如果你想删除所有 .bak 扩展名的文件你可以这样做 find . -name *.bak | xargs rm -f
9、查找并执行命令 1可以使用 -exec 选项来对找到的每个文件执行一个命令。例如为找到的所有 .sh文件打印其修改时间 find . -name *.sh -exec ls -l {} \; 执行结果如下 2查找当前目录中文件属主具有读、写权限并且文件所属组的用户和其他用户具有读权限的文件,并列出完整路径 find . -type f -perm 644 -exec ls -l {} \; 3查找系统中所有文件长度为 0 的普通文件并列出它们的完整路径 find / -type f -size 0 -exec ls -l {} \; 4找到tes文件并执行操作例如删除 find /path/search -name tes -exec rm {} \;
10、忽略或避免某些条件 1使用 -prune 选项来避免进入某些目录。例如避免进入 .git 子目录 find . -path .git -prune -o -print 2查找所有 .txt 文件但忽略大小为 0 的文件 find . -name *.txt ! -size 0 -print
12、递归查找 默认情况下find 命令会递归地查找子目录。如果你想限制搜索深度可以使用 -maxdepth 和 -mindepth 选项。例如只在当前目录中查找不包括子目录 find . -maxdepth 1 -name *.txt -print