☞ 程序员进阶架构师必备资源免费送 ☜

在系统上查找文件或目录时,Linux上的find命令无与伦比。它使用简单,而且有许多不同的选项,可让您微调文件搜索。继续阅读以查看如何使用此命令在系统上查找任何内容的示例。一旦您知道如何在Linux中使用find命令,每个文件都只需敲击几下。目录

  1. 查找目录

  2. 查找隐藏文件

  3. 查找特定大小或大于X的文件

  4. 从文件列表中查找

  5. 不在列表中查找

  6. 设置maxdepth

  7. 查找空文件(零长度)

  8. 查找最大的目录或文件

  9. 查找setuid设置文件

  10. 查找sgid设置文件

  11. 列出文件未经允许被拒绝

  12. 在最近X天内查找修改过的文件

  13. 按时间排序

  14. 定位和查找之间的区别

  15. find命令的CPU负载

查找目录您可以使用-type d选项告诉find命令专门查找目录。这将使find命令仅搜索匹配的目录名,而不搜索文件名。

$ find /path/to/search -type d -name "name-of-dir"

查找隐藏文件由于Linux中的隐藏文件和目录以句点开头,因此我们可以在搜索字符串中指定此搜索模式,以便递归列出隐藏的文件和目录。

$ find /path/to/search -name ".*"

查找特定大小或大于X的文件find的-size选项允许我们搜索特定大小的文件。它可用于查找确切大小的文件,大于或小于特定大小的文件或适合指定大小范围的文件。以下有些例子:搜索大于10MB的文件:

$ find /path/to/search -size +10M

搜索小于10MB的文件:

$ find /path/to/search -size -10M

搜索大小恰好为10MB的文件:

$ find /path/to/search -size 10M

搜索大小在100MB到1GB之间的文件:

$ find /path/to/search -size +100M -size -1G

从文件列表中查找如果您有需要搜索的文件列表(例如,在.txt文件中),则可以使用find和grep命令的组合来搜索文件列表。为了使此命令起作用,只需确保要搜索的每个模式之间都用换行符隔开。

$ find /path/to/search | grep -f filelist.txt

grep的-f选项表示“file”,并允许我们指定要匹配的字符串文件。这导致find命令返回与列表中的文件或目录名称匹配的任何文件或目录名称。不在列表中查找使用上一个示例中提到的相同文件列表,您还可以使用find来搜索与文本文件内的模式不符的任何文件。再一次,我们将结合使用find和grep命令;我们只需要用grep指定一个附加选项:

$ find /path/to/search | grep -f filelist.txt

grep的-v选项表示“逆向匹配”,并且将返回与文件列表中指定的任何模式都不匹配的文件列表。设置maxdepthfind命令默认将进行递归搜索。这意味着它将在指定的目录中搜索您指定的模式,以及您告诉它要搜索的目录中的所有子目录。例如,如果告诉find搜索Linux(/)的根目录,则无论存在多少个子目录,它都会搜索整个硬盘。您可以使用-maxdepth选项来规避此行为。在-maxdepth之后指定一个数字,以指示查找应递归搜索的子目录数。仅搜索当前目录中的文件,而不递归搜索:

$ find . -maxdepth 0 -name "myfile.txt"

仅在当前目录和更深的一个子目录中搜索文件:

$ find . -maxdepth 1 -name "myfile.txt"

查找空文件(零长度)要使用find搜索空文件,可以使用-empty标志。搜索所有空文件:

$ find /path/to/search -type f -empty

搜索所有空目录:

$ find /path/to/search -type d -empty

如果希望自动删除find返回的空文件或目录,那么将此命令与-delete选项结合使用也非常方便。删除目录(和子目录)中的所有空文件:

$ find /path/to/search -type f -empty -delete

查找最大的目录或文件如果您想快速确定系统上哪些文件或目录占用了最多的空间,则可以使用find进行递归搜索,并按文件和目录的大小输出排序的列表。如何显示目录中最大的文件:

$ find /path/to/search -type f -printf "%s\t%p\n" | sort -n | tail -1

请注意,find命令已被排序到另外两个方便的Linux实用程序:sort和tail。Sort将按文件的大小顺序排列文件列表,而tail将仅输出列表中的最后一个文件,该文件也是最大的。如果您要输出例如最大的前5个文件,则可以调整tail命令。

$ find /path/to/search -type f -printf "%s\t%p\n" | sort -n | tail -5

或者,您可以使用head命令来确定最小的文件:

$ find /path/to/search -type f -printf "%s\t%p\n" | sort -n | head -5

如果要搜索目录而不是文件,只需在类型选项中指定“ d”即可。如何显示最大目录:

$ find /path/to/search -type d -printf "%s\t%p\n" | sort -n | tail -1

查找setuid设置文件Setuid是“set user ID on execution”的缩写,它是一种文件权限,允许普通用户运行具有升级特权(例如root)的程序。出于明显的原因,这可能是一个安全问题,但是可以使用find命令和一些选项轻松隔离这些文件。find命令有两个选项可帮助我们搜索具有特定权限的文件:-user和-perm。要查找普通用户能够以root特权执行的文件,可以使用以下命令:

$ find /path/to/search -user root -perm /4000

在上面的屏幕截图中,我们包含了-exec选项,以便显示有关查找返回文件的更多输出。整个命令如下所示:

$ find /path/to/search -user root -perm /4000 -exec ls -l {} \;

您也可以在此命令中用“ root”代替您要作为所有者搜索的任何其他用户。或者,您可以搜索具有SUID权限的所有文件,而根本不指定一个用户:

$ find /path/to/search -perm /4000

查找sgid设置文件查找具有SGID设置的文件与查找具有SUID的文件几乎相同,只是需要将4000的权限更改为2000:

$ find /path/to/search -perm /2000

您还可以通过在perms选项中指定6000来搜索,同时设置了SUID和SGID的文件:

$ find /path/to/search -perm /6000

列出文件未经允许被拒绝使用find命令搜索文件时,您必须对要搜索的目录和子目录具有读取权限。如果您没有找到,find将输出一条错误消息,但会继续浏览您确实拥有权限的目录。

没有权限尽管这可能发生在许多不同的目录中,但在搜索根目录时肯定会发生。这意味着,当您尝试在整个硬盘上搜索文件时,find命令将产生大量错误消息。为避免看到这些错误,您可以将find的stderr输出重定向到stdout,并将其通过管道传递到grep。

$ find / -name "myfile.txt" 2>%1 | grep -v "Permission denied"

此命令使用grep的-v(反向)选项来显示所有输出,除了显示“拒绝权限”之外的所有输出。查找最近X天内的修改文件使用find命令上的-mtime选项搜索最近X天内被修改的文件或目录。它也可以用于搜索X天之前的文件,或X天之前被完全修改过的的文件。以下是一些如何在find命令上使用-mtime选项的示例:搜索最近30天内修改过的所有文件:

$ find /path/to/search -type f -mtime -30

搜索超过30天之前已修改的所有文件:

$ find /path/to/search -type f -mtime +30

搜索30天前刚修改过的所有文件:

$ find /path/to/search -type f -mtime 30

如果希望find命令输出有关找到的文件的更多信息,例如修改日期,则可以使用-exec选项并包含ls命令:

$ find /path/to/search -type f -mtime -30 -exec ls -l {} \;

按时间排序要按文件的修改时间对查找结果进行排序,您可以使用-printf选项以可排序的方式列出时间,然后将其输出到sort实用程序。

$ find /path/to/search -printf "%T+\t%p\n" | sort

此命令将对旧的文件进行排序。如果您希望较新的文件首先显示,只需传递-r(反向)选项即可进行排序。

$ find /path/to/search -printf "%T+\t%p\n" | sort -r

定位和查找之间的区别Linux上的locate命令是搜索系统上文件的另一种好方法。它没有像find命令那样包含过多的搜索选项,因此它的灵活性较差,但仍然很方便。

$ locate myfile.txt

locate命令通过搜索包含系统上所有文件名的数据库来工作。搜索到的数据库已使用upatedb命令进行更新。由于locate命令不必实时搜索系统上的所有文件,因此它比find命令效率更高。但是,除了缺少选项之外,还有另一个缺点:文件数据库每天仅更新一次。您可以通过运行updatedb命令手动更新此文件数据库:

$ updatedb

当您需要在整个硬盘驱动器中搜索文件时,locate命令特别有用,因为find命令自然需要更长的时间,因为它必须实时遍历每个目录。如果搜索一个特定目录(已知其中不包含大量子目录),则最好坚持使用find命令。查找命令的CPU负载在搜索大量目录时,find命令可能会占用大量资源。它本来应该允许更重要的系统进程具有优先级,但是如果需要确保find命令占用生产服务器上的较少资源,则可以使用ionice或nice命令。监视find命令的CPU使用情况:

$ top

降低find命令的输入/输出优先级:

$ ionice -c3 -n7 find /path/to/search -name "myfile.txt"

降低find命令的CPU优先级:

$ nice -n 19 find /path/to/search -name "myfile.txt"

或结合使用这两个实用程序以真正确保低I / O和低CPU优先级:

$ nice -n ionice -c2 -n7 find /path/to/search -name "myfile.txt"

我希望您对本教程有用。继续回来。

-------------------------知乎:良许LinuxB站:程序员良许抖音:良许微博:良许Linux

本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取!

推荐阅读:

看完这篇还不了解 Nginx,那我就哭了!

B站收藏 6.1w+!GitHub 标星 3.9k+!这门神课拯救了我薄弱的计算机基础

真人出镜 | 副业收入超过主业收入,我是怎么做到的?

5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号内回复「1024」,即可免费获取!!

find 命令_教你Linux find命令实例教程:15个find命令用法相关推荐

  1. linux打开文件命令_详解Linux中3个文件查找相关命令

    来自:民工哥技术之路 1.which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which  查看可执行文件的位置. whereis 查看文件的位置. ...

  2. linux 开机自动运行命令_如何在Linux终端同时运行多个Linux命令

    在一行中运行两个或多个命令可以节省大量时间,并在Linux中提高效率.在Linux中,有三种方法可以在一行中运行多个命令: ; Command 1 ; Command 2 首先运行Command1,然 ...

  3. aix查看文件夹大小命令_轻松掌握 Linux 命令(1):ls 命令

    原创:lbb4511 Python猫 ls 命令是 linux 下最常用的命令.ls 命令就是 list 的缩写,缺省下用来打印出当前目录的清单.如果 ls 指定其他目录,那么就会显示指定目录里的文件 ...

  4. linux xargs命令_如何在Linux中使用xargs命令?

    linux xargs命令 The xargs command allows us to pass the output of one command as the input for another ...

  5. linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国

    在向你展示如何在 Linux 中更改 Mac 地址之前,让我们首先讨论为什么要更改它.-- Dimitrios Savvopoulos 在向你展示如何在 Linux 中更改 MAC 地址之前,让我们首 ...

  6. linux终端删除文件命令_如何在Linux终端中删除文件和目录

    linux终端删除文件命令 Fatmawati Achmad Zaenuri/Shutterstock.comFatmawati Achmad Zaenuri / Shutterstock.com T ...

  7. chmod 777命令_实用的linux 命令(上)

    今天介绍几个我常用的Linux 命令,每个命令这里只介绍其常用参数. 对于每个Linux 命令都可以使用man + 命令名称,查看其完整使用方法. 0,man man 命令是一个非常有用的命令,当你不 ...

  8. linux常用命令_干货:Linux常用命令全称及讲解

    从事IT行业的很多人都会使用Linux常用命令,但是知道这些常用命令全称的人并不多,让我们来看看这些常用命令对应的全称吧!小编精心整理了一下,毕竟常用命令比较多,如果没有你常用的还望海涵,可以评论区补 ...

  9. linux echo命令_如何在Linux上使用Echo命令

    linux echo命令 Fatmawati Achmad Zaenuri/ShutterstockFatmawati Achmad Zaenuri / Shutterstock The echo c ...

  10. linux查找文件夹命令_如何在Linux中使用命令行查找文件和文件夹

    linux查找文件夹命令 Most people use a graphical file manager to find files in Linux, such as Nautilus in Gn ...

最新文章

  1. 文档扫描仪的构建——使用Python,OpenCV应用透视变换来获得图像的自顶向下的“鸟瞰图”
  2. 内存屏障linux,Linux内存屏障
  3. Cannot change version of project facet Dynamic Web Module to 2.5 问题的解决方法
  4. 第三周 数据分析之概要 Pandas库入门
  5. 如何做简单的访客统计JQ+PHP
  6. 三维重建 几何方法 深度学习_基于深度学习的视觉三维重建研究总结
  7. 【树状数组】递增子序列(金牌导航 数据结构优化DP-1)
  8. 数据挖掘应用实战-一文教你如何全面分析股市数据特征
  9. 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
  10. 封装 电流密度 重布线_具有周边硅通孔的晶圆级芯片封装有限元分析
  11. spring读取多个配置properties报错“Could not resolve placeholder“的解决方案
  12. javascript的dom选择器
  13. (转)数字货币平台的交易风险
  14. STM32串口驱动安装攻略
  15. php mysql 去重,数据库文本去重
  16. 【翻唱】学习日语歌 (青鸟)火影忍者 OP
  17. 什么是Vue全家桶,Vue全家桶包含哪些东西以及怎么使用
  18. 交互设计基本功!5个值得学习的APP交互方式
  19. 在网易做游戏美术设计师是种什么体验?
  20. 最新苹果手机备份同步工具 iMazing2.16.4官方免费下载

热门文章

  1. 让axios读取本地模拟数据报错404: Error: Request failed with status code 404
  2. mysql innodb_large_prefix_那些从MySQL5.6升级到5.7的坑--innodb_large_prefix-阿里云开发者社区...
  3. bigdecimal取小数部分_无限小数的本质
  4. oracle判断字符串以什么开头_oracle存储过程 判断字符串开头
  5. python库下载安装_Windows版的各种Python库安装包下载地址与安装过程
  6. 2008 php mysql_windows 2008配置Nginx+PHP+Mysql
  7. Introduction to Computer Networking学习笔记(二十四):拥塞控制 TCP Reno
  8. tick timer 间隔_c#-System.Timers.Timer稳步增加间隔
  9. android 圆角图片 imageview,【android 图片圆角设定】CustomImageView简单一览
  10. MQTT教程(二):MQTT中的可变报头