通过 find 命令找到你要找的东西

      最后更新:2020-03-08 13:04:46 手机定位技术交流文章

      通过find命令查找您要查找的内容

      Linux技术

      1583466266

      find命令有大量选项可以帮助您准确定位您需要在Linux系统上查找的文件本文讨论了一系列非常有用的选项。- Sandra Henry-stocker(作者)


      有许多在Linux系统上查找文件的命令,在使用它们时,您有大量的选项可以使用。

      例如,您不仅可以通过文件的名称找到文件,还可以通过其所有者或组、创建时间、大小、分配的权限、最后一次访问时间、关联的信息节点,甚至是文件是否属于系统上不再存在的帐户或组来找到文件。

      您还可以指定从哪里开始搜索,搜索应该深入到文件系统的哪个位置,搜索结果会告诉您找到的文件数量。

      ,所有这些要求都可以通过find命令来处理以下

      提供了根据这些要求查找文件的示例在某些命令中,错误的输出(例如试图列出您没有读取权限的文件)将被发送到/dev/null,以便我们不必查看它。或者,我们可以简单地以root用户身份运行来避免这个问题

      请记住,还有更多其他选项。本文涵盖了很多内容,但不是find命令帮助您定位文件的所有方式。

      选择起点

      使用查找,您可以选择起点或从您的位置开始要选择搜索的起点,请在其后输入单词find例如,查找/usr或查找。/bin将开始在/usr目录或当前位置下的bin目录中搜索,而find ~将开始在您的主目录中搜索,即使您当前位于当前文件系统的其他位置

      选择

      您最常用的搜索策略之一是按名称搜索文件这需要-name选项

      默认情况下,find显示找到的文件的完整路径如果您将-print添加到命令中,您将看到相同的结果。如果您想查看与文件相关的详细信息,例如文件的长度和权限,您需要在find命令的末尾添加-ls参数。

      $ find ~/Bin-name tryme/home/SHS/Bin/tryme $ find ~/Bin-name tryme-print/home/SHS/Bin/tryme $ find ~/Bin-name tryme-ls 9175284-rwx-1hshs 139 apr 82019/home/SHS/Bin/tryme

      您也可以使用子字符串来查找文件。例如,在上面的例子中,如果您用try*替换tryme,您将找到所有名称以try开头的文件。(LCTT:如果您想使用通配符*,请将搜索字符串放在单引号或双引号中,以避免通配符被外壳程序解释)

      按名称查找文件可能是find命令最典型的用法,但是有许多其他方法可以找到文件,并且有必要这样做。以下部分展示了如何使用其他可用的方法

      此外,当按文件大小、组、索引节点和其他标准搜索文件时,您需要确认找到的文件是否与您要查找的文件匹配。使用-ls选项显示细节非常有用

      按大小查找文件

      按大小查找文件需要使用-size选项和一点相应规范的技巧例如,如果您指定-size 189b,您将找到189个块大小的文件,而不是189个字节(LCTT:如果你跟不上单位,默认单位是b一个块的大小是512字节,少于或正好是512字节将占用一个块。)对于字节,您需要使用- size 189c(字符)此外,如果你指定-大小为200瓦,你会发现200个“字”文件-以“双字节增量”的字,而不是“我们彼此谈论的事情”中的字您还可以通过以千字节(k)、兆字节(m)和千兆字节(g)为单位提供大小来查找文件在LCTT的情况下,Linux用户将搜索大于所选大小的文件。例如,要查找大于1gb的文件,可以使用这样的命令,其中+1G表示“大于1gb”:

      $ find-size+1G-ls 2 & gt。/dev/null 787715 1053976-rw-rw-r-1 SHS 1079263432 2018年1 2月21日。/backup . zip 801834 1052556-rw-rw-r-1 SHS SHS 1077809525 Dec 21 2018 ./ 2019/hold.zip

      按索引节点查找文件编号

      您可以按用于维护文件元数据的索引节点查找文件(即,除文件内容和文件名之外的所有内容)

      $ find -inum 919674 -ls 2>。/dev/null 9196744-rw-rw-r-1 SHS SHS 512 dec 27 15:25。/bin/my.log

      查找具有特定文件所有者或组的文件

      按所有者或组查找文件也非常简单这里我们使用sudo来解决权限问题。

      $ sudofund/home-user nemo-name ' ' *。png ' '-ls 17052194 drwxr-xr-x2nemo 4096 Jan 2808:50/home/nemo/pictures/me . png

      在以下命令中,我们将查找一个名为admins的多用户组拥有的文件

      # find/tmp-group admins-ls 261994-rwxr-x-1 dory admins 27 feb 16 18:57/tmp/test script

      查找没有所有者或组的文件

      您可以使用以下命令中显示的-nouser选项来查找不属于当前系统上任何用户的文件

      # FIND/TMP-NOUSER-LS 262204-RWX-1016 17 FEB 17 16:42/TMP/HELLO

      请注意,该列表显示了旧用户的UID和GID,这清楚地表明该用户未在系统上定义此命令将查找帐户已从系统中删除的用户在主目录外创建的文件,或者在主目录中创建的在用户帐户被删除后未被删除的文件类似地,-nogroup选项也可以找到这样的文件,尤其是当这些用户是相关组的唯一成员时。

      根据上次更新时间查找文件

      在此命令中,我们在特定用户的主目录中搜索在过去24小时内更新过的文件Sudo用于搜索另一个用户的主目录

      $ sudofund/home/nemo-mtime-1/home/nemo/home/nemo/snap/click/home/nemo/tryme

      根据上次更改权限的时间查找文件

      -ctime选项可以帮助您查找其状态(如权限)在某个参考时间范围内发生了更改的文件。以下是查找在最后一天更改了权限的文件的示例:

      $ find。-ctime

      ls 7879874-rwxr-xr-x1shs 189 feb 1107:31。/tryme

      请记住,显示的日期和时间仅反映文件内容的上次更新您需要使用stat之类的命令来查看与文件相关联的三种状态(文件创建、修改和状态更改)

      根据上次访问查找文件

      在此命令中,我们使用-atime选项查找过去两天内访问过的本地pdf文件

      $ find-name'' *。pdf''-atime-2。/wing ding _ invite。pdf

      根据文件相对于另一个文件的时间来搜索文件

      您可以使用-new选项来查找比其他文件新的文件

      $ find。-更新的dig 1-ls 786434 68 drwxr-xr-x 67 SHS SHS 69632 2月16日19:05。1064442 4 drwxr-xr-x 5 SHS SHS 4096 FEB 16 11:06。/SNAP/CHAIN 7918464-RW-RW-R-1 SHS SHS 649 FEB 13 14:26。/DIG

      没有相应的旧选项,但您可以使用它!-较新的(即较旧的)得到类似的结果,它们基本上是相同的。

      按类型查找文件

      按文件类型查找文件。你有许多选项-常规文件,目录,块,字符文件,等等以下是文件类型选项列表:

      b块特殊文件(缓冲的)c字符特殊文件(无缓冲的)d目录p命名管道(先进先出)f常规文件l符号链接s套接字

      这里是一个寻找符号链接的例子:

      $ find。-l-ls 805770 lrwxrwxwx1shs 11 AP 102019型。/火山-> volcano.pdf 918552 0 lrwxrwxrwx 1 SHS SHS 1 Jun 16 2018。/letter ->。pers/letter 2 om

      限制搜索深度

      -mindepth和-maxdepth选项控制文件系统中的搜索深度(从当前位置或起始点开始)

      $ find-max depth 3-name ' ' * loop ' '。/bin/save/oldloop。/bin/长循环。/private/loop

      查找空文件在此命令中,我们查找空文件,但不输入目录及其子目录

      $ find。-max depth 2-空型f-ls 917517 0-rw-rw-r-1 SHS SHS 0 Sep 23 11:00。/投诉/新文件7920500-rw-rw-r-1 shshshs sooct 4 19:02。/垃圾

      按权限查找文件

      您可以使用-perm选项查找具有特定权限集的文件在下面的示例中,我们只查找常规文件(-类型f),以避免看到符号链接,即使它们引用的文件受到限制,符号链接也是默认授予的权限。

      $ find-perm 777-类型f -ls查找:'。/。“dbus”:许可被拒绝798748 4-rwxrwxrwx 1 SHS SHS 15 2019年3月28日。/runme

      使用查找来帮助您删除文件

      如果使用以下命令,您可以使用查找命令来定位和删除文件:

      $ find。-name runme-exec RM { };

      {}代表根据搜索条件找到的每个文件的名称

      一个非常有用的选项是用-ok替换-exec当您这样做时,find会在删除任何文件之前要求确认。

      $ find。-name runme-ok RM-RF { };<。rm...。/bin/runme >。?

      删除文件不是-ok and -exec能为您做的唯一事情例如,您可以复制、重命名或移动文件

      确实有许多有效使用find命令的选项,并且无疑有一些选项在本文中没有涉及。我希望你已经找到了一些特别有用的新方法。

      via:https://www . network world . com/article/3527420/how-to-find-what-you-re-looking-on-Linux-with-find . html

      作者:Sandra Henry-Stocker主题:lujun9972翻译:heguangzhi校对:wxy

      本文最初由LCTT编译。Linux中国荣誉

      点击“了解更多”访问链接

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/544.html

          热门文章

          文章分类