小编给大家分享一下linux如何通过find命令查找东西,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
使用 find
,你可以选择一个起点或从你所在的位置开始。要选择的搜索的起点,请在单词 find
后输入它。例如,find /usr
或 find ./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 917528 4 -rwx------ 1 shs shs 139 Apr 8 2019 /home/shs/bin/tryme
你也可以使用子字符串来查找文件。例如,如果你将上面示例中的 tryme
替换为 try*
,你将会找到所有名称以 try
开头的文件。(LCTT 译注:如果要使用通配符 *
,请将搜索字符串放到单引号或双引号内,以避免通配符被 shell 所解释)
按名称查找文件可能是 find
命令最典型的用法,不过还有很多其他的方式来查找文件,并且有这样做的需要。下面的部分展示了如何使用其他可用的方式。
此外,当按文件大小、组、索引节点等条件来搜索文件时,你需要确认找到的文件与你要查找的文件是否相匹配。使用 -ls
选项来显示细节是非常有用。
按大小查找文件需要使用 -size
选项并且对相应规范使用一点技巧。例如,如果你指定 -size 189b
,你将找到 189 个块大小的文件,而不是 189 个字节。(LCTT 译注:如果不跟上单位,默认单位是 b
。一个块是 512 个字节大小,不足或正好 512 个字节将占据一个块。)对于字节,你需要使用 --size 189c
(字符)。而且,如果你指定 --size 200w
,你将会找到 200 个“字”的文件——以“双字节增量”为单位的字,而不是“我们互相谈论的那些事情”中的单词。你还可以通过以千字节(k
)、兆字节(M
)和千兆字节(G
)为单位提供大小来查找文件。(LCTT 译注:乃至还有 T
、P
)
大多数情况下,Linux 用户会搜索比选定大小要大的文件。例如,要查找大于 1 千兆字节的文件,你可以使用这样的命令,其中 +1G
表示“大于 1 千兆字节”:
$ find -size +1G -ls 2>/dev/null 787715 1053976 -rw-rw-r-- 1 shs shs 1079263432 Dec 21 2018 ./backup.zip 801834 1052556 -rw-rw-r-- 1 shs shs 1077809525 Dec 21 2018 ./2019/hold.zip
你可以通过用于维护文件元数据(即除文件内容和文件名之外的所有内容)的索引节点来查找文件。
$ find -inum 919674 -ls 2>/dev/null 919674 4 -rw-rw-r-- 1 shs shs 512 Dec 27 15:25 ./bin/my.log
按所有者或组查找文件也非常简单。这里我们使用 sudo
来解决权限问题。
$ sudo find /home -user nemo -name "*.png" -ls 1705219 4 drwxr-xr-x 2 nemo nemo 4096 Jan 28 08:50 /home/nemo/Pictures/me.png
在下面这个命令中,我们寻找一个被称为 admins
的多用户组拥有的文件。
# find /tmp -group admins -ls 262199 4 -rwxr-x--- 1 dory admins 27 Feb 16 18:57 /tmp/testscript
你可以使用如下命令所示的 -nouser
选项来查找不属于当前系统上的任何用户的文件。
# find /tmp -nouser -ls262204 4 -rwx------ 1 1016 1016 17 Feb 17 16:42 /tmp/hello
请注意,该列表显示了旧用户的 UID 和 GID,这清楚地表明该用户未在系统上定义。这种命令将查找帐户已从系统中删除的用户创建在主目录之外的文件,或者在用户帐户被删除后而未被删除的主目录中创建的文件。类似地,-nogroup
选项也会找到这样的文件,尤其是当这些用户是相关组的唯一成员时。
在此命令中,我们在特定用户的主目录中查找过去 24 小时内更新过的文件。sudo
用于搜索另一个用户的主目录。
$ sudo find /home/nemo -mtime -1/home/nemo/home/nemo/snap/cheat/home/nemo/tryme
-ctime
选项可以帮助你查找在某个参考时间范围内状态(如权限)发生更改的文件。以下是查找在最后一天内权限发生更改的文件的示例:
$ find . -ctime -1 -ls 787987 4 -rwxr-xr-x 1 shs shs 189 Feb 11 07:31 ./tryme
请记住,显示的日期和时间只反映了对文件内容进行的最后更新。你需要使用像 stat
这样的命令来查看与文件相关联的三个状态(文件创建、修改和状态更改)。
在这个命令中,我们使用 -atime
选项查找在过去两天内访问过的本地 pdf 文件。
$ find -name "*.pdf" -atime -2./Wingding_Invites.pdf
你可以使用 -newer
选项来查找比其他文件更新的文件。
$ find . -newer dig1 -ls 786434 68 drwxr-xr-x 67 shs shs 69632 Feb 16 19:05 . 1064442 4 drwxr-xr-x 5 shs shs 4096 Feb 16 11:06 ./snap/cheat 791846 4 -rw-rw-r-- 1 shs shs 649 Feb 13 14:26 ./dig
没有相应的 -older
选项,但是你可以用 ! -newer
(即更旧)得到类似的结果,它们基本上一样。
通过文件类型找到一个文件,你有很多选项——常规文件、目录、块和字符文件等等。以下是文件类型选项列表:
b 块特殊文件(缓冲的)c 字符特殊文件(无缓冲的)d 目录p 命名管道(FIFO)f 常规文件l 符号链接s 套接字
这里有一个寻找符号链接的例子:
$ find . -type l -ls 805717 0 lrwxrwxrwx 1 shs shs 11 Apr 10 2019 ./volcano -> volcano.pdf 918552 0 lrwxrwxrwx 1 shs shs 1 Jun 16 2018 ./letter -> pers/letter2mom
-mindepth
和 -maxdepth
选项控制在文件系统中搜索的深度(从当前位置或起始点开始)。
$ find -maxdepth 3 -name "*loop"./bin/save/oldloop./bin/long-loop./private/loop
在这个命令中,我们寻找空文件,但不进入目录及其子目录。
$ find . -maxdepth 2 -empty -type f -ls 917517 0 -rw-rw-r-- 1 shs shs 0 Sep 23 11:00 ./complaints/newfile 792050 0 -rw-rw-r-- 1 shs shs 0 Oct 4 19:02 ./junk
你可以使用 -perm
选项查找具有特定权限集的文件。在下面的示例中,我们只查找常规文件(-type f
),以避免看到符号链接,默认情况下符号链接被赋予了这种权限,即使它们所引用的文件是受限的。
$ find -perm 777 -type f -lsfind: ‘./.dbus’: Permission denied 798748 4 -rwxrwxrwx 1 shs shs 15 Mar 28 2019 ./runme
如果使用如下命令,你可以使用 find
命令定位并删除文件:
$ find . -name runme -exec rm {} \;
{}
代表根据搜索条件找到的每个文件的名称。
一个非常有用的选项是将 -exec
替换为 -ok
。当你这样做时,find
会在删除任何文件之前要求确认。
$ find . -name runme -ok rm -rf {} \;< rm ... ./bin/runme > ?
删除文件并不是 -ok
和 -exec
能为你做的唯一事情。例如,你可以复制、重命名或移动文件。
以上是“linux如何通过find命令查找东西”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。