find命令。find命令有什么用?find命令在Linux和UNIX系统中用于查找文件和目录并对其进行后续操作。在find命令的帮助下,系统管理员可以根据一些搜索条件找到所需的文件。我们可以使用单个或组合多个条件,然后可以对获得的结果进行操作。可选搜索条件:文件名、目录名、创建日期、修改日期、所有者、权限。查找命令语法格式:$find{file-or-directory-name}选项:–delete:删除文件或目录-exec命令{}\;:根据find命令的结果执行命令-okcommand:会运行和-exec一样的命令,但是在真正执行之前会提示(1)FindallfilesanddirectoriesunderthecurrentworkingdirectoryTofindonlydirectory,运行$查找。-typed只查找文件,运行$find。-typef(2)列出特定目录中的所有文件假设我们要列出/home/linuxtechi/Downlods中的所有文件对于文件和目录,运行$find/home/linuxtechi/Downloads只查找文件,运行$find/home/linuxtechi/Downloads-typef要仅查找目录,请运行$find/home/linuxtechi/Downloads-typed(3)从目录中按文件名查找文件要在特定目录中按名称查找文件,请运行$sudofind/home-typef-namecleanup.sh上面的命令会在/home文件夹中寻找cleanup.sh文件。我们也可以在/var/log目录下找到所有扩展名为.log的文件,运行$sudofind/var/log-typef-name*.log(4)来查找多个目录下的文件假设我们要在To中查找文件在/home和/root文件夹中查找扩展名为.sh的文件,运行$sudofind/home/root-typef-name'*.sh'(5)忽略文件名大小写,以便查找与大小写无关的文件名写入影响,我们可以在find命令中使用-iname选项$sudofind/home-typef-inameCleanUP.SH/home/linuxtechi/automation/cleanup.sh$(6)查找除上述类型之外的所有文件类型假设我们要查找所有不是上述类型的文件,为此我们可以在find命令中使用-not选项,如下所示$sudofind/home-typef-not-name'*.mp3'(7)使用多个条件查找文件我们还可以结合多个条件来使用正则表达式搜索文件。假设我们要在主目录中搜索扩展名为.sh和.mp3的文件,运行$find$HOME-regex".*\.\(sh\|mp3\)$"(8)以使用OR查找文件conditionwe也可以组合多个搜索条件,然后根据其中任意一个条件的满足使用OR运算符来查找文件$find$HOME-name"*.sh"-o-name"jumpscripts"/home/linuxtechi/automation/cleanup.sh/home/linuxtechi/dumpdata.sh$9)按权限查找文件要按权限查找文件,请在find命令中使用-perm选项。例如查找/home目录下所有0777权限的文件,运行$sudofind/home-typef-perm0777查找用户目录下的所有可执行文件$find$HOME-typef-perm/a+x(10)查找所有隐藏文件要搜索用户主目录下的所有隐藏文件,运行命令$find$HOME-typef-name".*"(11)查找所有带SGID的文件找到所有带SGID的文件SGID位,我们可以使用$sudofind/-perm/g=s(12)来查找所有带有SUID位的文件要找到所有带有SUID位的文件,运行$sudofind/-perm/u=s(13)来findallreadablebutwithoutFileswithexecutepermissions要只查找所有人都可读但任何人都不能执行的文件,请运行$find$HOME-perm-a+r\!-perm/a+x(14)搜索多种文件类型在一个find命令中,我们可以搜索多种文件类型$find$HOME-typef,d,l(15)定位特定文件拥有的所有文件/home目录下的用户,运行以下命令,查找/home目录下属于特定用户的所有文件,运行以下命令$sudofind$HOME-userlinuxtechi(16)查找属于某个组的所有文件以下命令将搜索apache组拥有的所有文件。$sudofind/-groupapache(17)在find命令中使用“-size”选项根据大小搜索文件。运行以下命令以查找大小恰好为50MB的所有文件。使用-size选项根据文件大小搜索查找等于50MB的文件$find$HOME-size50M/home/linuxtechi/dbstuff$查找大于50MB的文件$find$HOME-size+50M查找小于50MB的文件$find$HOME-size-50M查找大小在40MB到500MB之间的文件$find$HOME-size+40M-size-500M(18)不要将目录下行链接到其他文件系统-xdev选项列出另一个文件系统中的挂载点或分区,但它不会瞧不起他们。以下命令将在/目录中搜索所有大于100MB的文件,不包括其他已安装的文件系统,并将错误消息重定向到/dev/null$find/-xdev-size+100M2>/dev/null(19)FindFilesModifiedN天前假设我们要查找10天前修改过的所有文件。我们可以使用-mtime选项来做到这一点$sudofind/-mtime102>/dev/null(20)查找N天前访问过的文件假设我们要查找10天前访问过的所有文件。我们可以使用-atime选项执行此操作$sudofind/-atime302>/dev/null(21)查找所有空文件和目录要搜索用户主目录中的所有空文件,请运行$find$HOME-typef-emptyor$find$HOME-typef-size0同理定位所有空目录$find$HOME-typed-empty(22)搜索和删除文件使用find命令,我们在一个命令文件中搜索和删除,-delete选项可以删除一个文件。在下面的示例中,我们正在从用户的主目录中搜索和删除mp3文件$find$HOME-typef-name"*.mp3"-delete注意:以上是破坏性命令,执行时要小心。(23)查找最大和最小文件要找到最大和最小文件,我们将结合sort命令和find命令&如果我们还想列出那些最大文件的前三个,我们将结合head为了找到最大和最小文件,我们会结合sort命令和find命令,如果我们进一步想列出最大文件的前三个,我们会结合head命令列出用户主目录中的前三个文件$find$HOME-输入f-execls-s{}\;|排序-n-r|head-351200/home/linuxtechi/dbstuff8276/home/linuxtechi/.cache/gnome-software/appstream/components.xmlb2764/home/linuxtechi/.local/share/gnome-photos/tracker3/private/meta.db-wal$我们也可以在用户家目录下找到最小的文件$find$HOME-typef-execls-s{}\;|排序-n|head-3(24)查找所有日志文件并将它们重定向到一个文件要在查找命令结果上运行命令,请使用-exec选项,语法如下-exec{}\;以下命令将查找所有文件并将它们的名称重定向到/tmp/logsfiles.txt$sudofind/var-typef-name'*.日志'-execls-lah{}\;>/tmp/logfiles.txt(25)搜索文件并更改其权限假设我们要搜索所有权限为777的文件并将其权限更改为644$find$HOME-typef-perm777-execchmod644{}\;(26)从文件中搜索文本假设我们要在所有日志文件中搜索错误词,运行以下命令假设我们要在所有日志文件中搜索For带有错误关键字的文件,运行以下命令$sudofind/var-typef-name'*.log'-execgrep-i'error'{}\;在上面的命令中,我们结合了find和grep命令来完成我的开源项目course-tencent-cloud(酷瓜云课堂-gitee仓库)course-tencent-cloud(酷瓜云课堂-github仓库)的任务