问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

Linux中find命令的用法汇总

发布网友 发布时间:2022-04-21 03:14

我来回答

1个回答

热心网友 时间:2023-10-14 05:23

Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大小等等。在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找文件。
在绝大多数Linux发行版中,你都可以直接使用 find 命令而无需进行任何安装操作。如果你想在linux系统的命令行中变得特别高效,那么 find 是你必须掌握的命令之一。
find 命令的基本语法如下:
$ find [path] [option] [expression]
一、基本用法
1. 列出当前目录和子目录下的所有文件
这个命令会列出当前目录以及子目录下的所有文件。
$ find
.
./abc.txt
./subdir
./subdir/how.php
./cool.php
该命令与以下命令效果相同
$ find .
$ find . -print
2. 查找特殊的目录或路径
下面的命令会查找当前目录下 test 文件夹中的文件,默认列出所有文件。
$ find ./test
./test
./test/abc.txt
./test/subdir
./test/subdir/how.php
./test/cool.php
下面的命令用于查找指定名称的文件。
$ find ./test -name "abc.txt"
./test/abc.txt
也可以使用通配符
$ find ./test -name "*.php"
./test/subdir/how.php
./test/cool.php
请注意,所有的文件夹都会被递归地查找。所以,这是用于查找指定扩展名文件的一种非常强大的方式。
如果我们尝试搜索 / 文件夹,也就是根目录,就会搜索整个文件系统,包括挂载的设备以及网络存储设备。所以请小心使用。当然,你随时可以通过按 Ctrl + C 来终止命令。
注意:当指定文件夹的时候(例如示例中的"./test"文件夹),忽略末尾的斜杠是没有问题的。但是,如果文件夹是一个指向其它位置的链接(symlink)时,你必须在末尾写上斜杠才能使find命令正常工作(find ./test/)。
忽略大小写
在查找文件名时,忽略大小写往往非常有用。要忽略大小写,只需要使用 iname 选项,而不是 name 选项。
$ find ./test -iname "*.Php"
./test/subdir/how.php
./test/cool.php
总是用双引号或单引号来包围匹配模式(文件名参数),这非常有用。不这样做的话有时也能正常工作,有时也可能会产生奇怪的结果。
3. *目录查找的深度
find 命令默认会递归查找整个目录树,而这非常消耗时间和资源。好在目录查找的深度可以手动指定。例如我们只想查找一到两层以内的子目录,可以通过 maxdepth 选项来指定。
$ find ./test -maxdepth 2 -name "*.php"
./test/subdir/how.php
./test/cool.php
$ find ./test -maxdepth 1 -name *.php
./test/cool.php
第二个示例中指定了 maxdepth 为1,表明最多只查找一层内的子目录,也就是只查找当前文件夹。
当我们只想在当前目录下查找,而不是查找整个目录树的时候,这个选项会特别有用。
与 maxdepth 选项相似,还有一个选项叫做 mindepth ,正如名字所表示的那样,它会至少到达第 N 层子目录后才开始查找文件。
4. 反向查找
除了查找满足条件的文件之外,我们还可以查找不满足条件的所有文件。当我们知道要在查找中排除哪些文件时,这个选项就能发挥作用了。
$ find ./test -not -name "*.php"
./test
./test/abc.txt
./test/subdir
在上面的示例中我们找到了所有扩展名不是 php 的文件和文件夹。我们也可以使用感叹号 ! 来代替 -not。
find ./test ! -name "*.php"
5. 结合多个查找条件
我们可以同时使用多个查找条件来指定文件名并排除某些文件。
$ find ./test -name 'abc*' ! -name '*.php'
./test/abc.txt
./test/abc
上面的命令查找所有以 abc 开头并且不含 .php 扩展名的文件。这个示例展现了 find 命令自带的查找表达式是多么的强大。
OR 操作符
当我们使用多个查找条件时, find 命令会将它们通过 AND 操作符结合起来,也就是说,只有满足所有条件的文件才会被列出。不过,如果我们需要进行基于 OR 运算的查找时,可以加上 -o 开关。
$ find -name '*.php' -o -name '*.txt'
./abc.txt
./subdir/how.php
./abc.php
./cool.php
上面的命令查找所有以 .php 结尾或者以 .txt 结尾的文件。
6. 只查找文件或目录
有时我们只想通过某个名字查找对应的文件或对应的目录,我们可以很容易实现这个要求。
$ find ./test -name abc*
./test/abc.txt
./test/abc
只查找文件
$ find ./test -type f -name "abc*"
./test/abc.txt
只查找目录
$ find ./test -type d -name "abc*"
./test/abc
非常有用而且方便!
7. 同时在多个目录下查找
如果你想要在两个不同的目录内进行查找,命令非常简单。
$ find ./test ./dir2 -type f -name "abc*"
./test/abc.txt
./dir2/abcdefg.txt
检查一下,它确实列出了来自给定的两个目录的文件。
8. 查找隐藏文件
在Linux系统中,隐藏文件的名字以英文的句号开头,即 . 。所以要列出隐藏文件,只需加上简单的文件名过滤条件就行了。
$ find ~ -type f -name ".*"
二、基于文件权限和属性的查找
9. 查找指定权限的文件
通过指定 perm 选项,我们可以查找具有特定权限的文件。下面的示例中查找了所有具有 0664 权限的文件。
$ find . -type f -perm 0664
./abc.txt
./subdir/how.php
./abc.php
./cool.php
我们可以用这个命令来查找带有错误权限的文件,这些文件可能会产生安全问题。
可以结合 反向查找 来进行权限检查。
$ find . -type f ! -perm 0777
./abc.txt
./subdir/how.php
./abc.php
./cool.php
10. 查找具有 SGID/SUID 属性的文件
下面的命令查找所有具有 644 权限和 SGID 属性的文件。
# find / -perm 2644
我们同样可以使用 1664 来查找设置了 粘滞位 (sticky bit)的文件。
# find / -perm 1644
perm 选项除了接受数值型参数外,同样接受 chmod 命令中的模式串。在下面的查找中,我们用另一种语法来代替数字。
$ find / -maxdepth 2 -perm /u=s 2/dev/null
/bin/mount
/bin/su
/bin/ping6
/bin/fusermount
/bin/ping
/bin/umount
/sbin/mount.ecryptfs_private
注意:由于权限不足,某些目录会拒接访问。命令中的 2/dev/null 正是用于清除输出中的错误访问结果。
11. 查找只读文件
$ find /etc -maxdepth 1 -perm /u=r
/etc
/etc/thunderbird
/etc/brltty
/etc/dkms
/etc/phpmyadmin
... output truncated ...
12. 查找可执行文件
$ find /bin -maxdepth 2 -perm /a=x
/bin
/bin/preseed_command
/bin/mount
/bin/zfgrep
/bin/tempfile
... output truncated ...
三、基于文件拥有者和用户组的查找
13. 查找属于特定用户的文件
查找当前目录下,属于 bob 的文件。
$ find . -user bob
.
./abc.txt
./abc
./subdir
./subdir/how.php
./abc.php
在指定所属用户的同时,我们同样可以指定文件名。
$ find . -user bob -name '*.php'
很容易看出,我们可以通过增加过滤条件来缩小查找文件的范围。
14. 查找属于特定用户组的文件
# find /var/www -group developer
四、基于日期和时间的查找
除了上面介绍的查找条件外,另外一个非常棒的查找条件就是文件的修改和访问时间(日期)。当我们想要找出哪些文件在某段时间内被修改的时候,这个查找条件将会非常方便。我们来看几个例子。
15. 查找过去的第 N 天被修改过的文件
# find / -mtime 50
16. 查找过去的 N 天内被访问过的文件
# find / -atime -50
17. 查找某段时间范围内被修改过内容的文件
# find / -mtime +50 -mtime -100
18. 查找过去的 N 分钟内状态发生改变的文件
$ find /home/bob -cmin -60
19. 查找过去的 1 小时内被修改过内容的文件
# find / -mmin -60
20. 查找过去的 1 小时内被访问过的文件
# find / -amin -60
五、基于文件大小的查找
21. 查找指定大小的文件
$ find / -size 50M
22. 查找大小在一定范围内的文件
$ find / -size +50M -size -100M
23. 查找最大和最小的文件
我们可以将 find 命令与 ls 和 sort命令结合,从而找出最大或最小的文件。
下面的命令使用了 sort 命令的 -r 选项,也就是从大到小降序排列。经过 head 命令的过滤之后,会显示当前目录和子目录下最大的5个文件。命令的执行过程需要一段时间,查找的速度取决于文件的总数。
$ find . -type f -exec ls -s {} \; | sort -n -r | head 5
同样,我们可以去掉 sort 命令的 -r 选项来进行升序排列,从而显示出最小的5个文件。
$ find . -type f -exec ls -s {} \; | sort -n | head 5
24. 查找空文件和空目录
查找空文件:
# find /tmp -type f -empty
查找空目录:
$ find ~/ -type d -empty
非常简单!
六、高级操作
find 命令不仅可以通过特定条件来查找文件,还可以对查找到的文件使用任意linux命令进行操作。下面给出两个例子。
25. 使用 ls 命令列出文件信息
我们使用 find 命令找到文件后,只能看到文件路径。如果想进一步查看文件信息,可以结合 ls 命令来实现。
$ find . -exec ls -ld {} \;
drwxrwxr-x 4 enlightened enlightened 4096 Aug 11 19:01 .
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./abc.txt
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:48 ./abc
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:26 ./subdir
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:26 ./subdir/how.php
-rw-rw-r-- 1 enlightened enlightened 29 Aug 11 19:13 ./abc.php
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php
26. 删除找到的文件
下面的命令会删除 tmp 目录下扩展名为 .txt 的文件。
$ find /tmp -type f -name "*.txt" -exec rm -f {} \;
我们同样可以删除目录,只要把 -type 后面的 f 改为 d ,并且在 rm 命令后面加上 -r 即可。
$ find /tmp -type d -name "dirToRemove" -exec rm -r -f {} \;
本文由 Wray 翻译,略有删改。考虑到原文有个别错误,以及为便于读者理解,故采用意译的方式。不足之处请大家指出,谢谢。
linux中find的用法

linux中find的用法:Linuxfind命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为想要查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。find根据规则判断path和expression,在命令列上第一个-(),!之前...

find 命令 7 种高级用法

另一个不使用:find /path/to/directory -atime +365 -exec rm -rf \;-exec 选项后面的命令必须以分号(;)结束。众所周知,转义字符用于去除单个字符的特殊含义。在 Linux 中,反斜杠\用作转义字符。所以我们将它用于分号字符。总结:看完 find 命令的 7 种用法后,开始提到的面试题现在好像很...

Linux命令之find的高级用法

1. 删除超时且空的文件夹:在当前目录下,使用`find -type d -empty -ctime +6 -exec rm {} \;`,可查找并移除超过6天且为空的文件夹。2. 查找特定大小的文件:在根目录下,`find -type f -size +1000M`,能定位大于1GB的文件。3. 查找特定权限的文件:在当前目录,`find -type f -...

linux的find命令详解

path : find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print:find命令将匹配的文件输出到标准输出。-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command { } ;,注意{ }和;之间的空格。-ok:和-exec的作用相同,只不过以一种更为安全的...

Linux中find命令用法全汇总,看完就没有不会用的!

Linux中的find命令是系统操作中的关键工具,它依据多种条件搜索文件和目录列表。本文将通过实例详细解析35个常用find命令,从基本搜索到高级应用,分为五部分深入讲解。第一部分:基本名称查找 在当前目录查找test.c:find . -name "test.c"在/home目录查找test:find /home -name "test"忽略大小写查找...

linuxfind命令详解

Linux find命令用于在文件系统中搜索文件,并根据指定的条件执行操作。它可以根据文件名、文件类型、权限等条件进行搜索,并且支持对搜索结果执行多种操作。二、详细解释 1. find命令的基本语法 find命令的基本语法为:find [路径] [条件] [操作]。其中,路径是搜索的起始位置,条件用于指定搜索文件的准则...

Linux常用命令——find命令大全

1. 文件名搜索:通过硬链接识别文件关系,但日常不建议使用硬链接。find命令在搜索时会消耗内存资源,特别是在根目录搜索时,可能会涉及proc目录。2. 文件大小:find命令支持按照指定单位搜索文件,如KB、MB等。3. 修改时间:mtime可用于搜索最近或较久未改动的文件,时间单位默认为天,支持+和-表示的...

Linux find 命令教程大全

1. 查找当前目录下的特定文件:例如查找名为test.txt的文件,使用命令:find . -name test.txt。2. 指定目录查找:如在根目录下查找test.txt,使用命令:find /root/ -name test.txt。3. 忽略大小写查找:使用命令:find /root -iname test.txt,可以忽略大小写查找文件。4. 查找目录:使用命令...

find 命令的 7 种用法

find . -type f -user yang。找到文件后执行命令:如删除atime+365的文件,find . -type f -atime +365 -exec rm -rf {} \;。掌握这些用法后,面试中的相关问题将变得轻而易举。此外,我整理了丰富的学习资料,涵盖Linux、虚拟化等领域,点击链接即可获取,祝学习进步!

linux 文件查找和检索find命令

find命令基础查找 用法:find 查找的目录 -name "查找的文件名"示例:2. 根据文件类型查找 用法:find 查找的目录 -type 文件类型 文件类型包括普通文件(f)、目录(d)、符号链接(l)、管道(p)、套接字(s)、字符设备(c)、块设备(b)示例:3. 文件大小 用法:find 查找目录 -size +10M。表示查找...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
家居风水:十大常见煞气及化解对策 word手写体是什么字体word手写体是什么字体类型 ...排列在一个图片中,一张图中有许都图片,就像拼接的一样 小米粥怎么熬更加浓稠美味? 小米粥怎么做比较浓稠? 芝麻分为什么一直在降,怎么提升? 昨晚梦见我几万块钱放在箱子里不安全,别人就同我去存钱,走到路上他... 在premier里面pr一个字一个字的出现怎么做 中秋结婚前送月饼可以吗 结婚第一年中秋节的规矩 linux中如何查看命令所在目录 linux中whereis的相关命令 linux文件名查找which,whereis,locate Linux里面where和which命令区别是什么? linux中which和whereis的区别 ubuntu的whereis是什么意思 Linux中如何使用whereis命令快速查找文件 linux中whereis命令与locate命令有什么区别? linux命令中which、whereis、locate有什么区别? 别人发到群里的群文件我下载下来存到微云里他那边会收到通知或者提醒或者他会知道吗??? 有什么比较好的图片文字编辑手机软件, 手机编辑文字的软件 有没有哪个手机软件可以编辑文字的,谢谢 收房已超过两年,还能起诉开发商延迟交房吗 开发商交房后多久过诉讼期 如何起诉开发商逾期交房 逾期交房什么意思 如果开发商延期交房我们应该怎样维权 𢁉寮这两个字怎么读? 开发商延期交房,业主什么时候可以起诉 余额宝升级了后为什么没有收益? 为什么余额宝升级后没有收益? 在线教育app有哪些 为什么我余额宝存4天了还没有钱 在线教育平台靠谱吗? 余额宝升级了后为什么没有收益 余额宝升级以后为什么一直没有收益呢? 为什么我多放了1万可是三天后余额宝的每日收益还是没有变? 余额宝升级后两天没看到收益 余额宝升级了转出转入收益怎么五天没有 目前国内较好的在线教育平台有哪些 财经余额宝 余额宝为什么升级后没有收益 在线教育APP平台具有哪些优势? 余额宝升级后没有收益 要多久才能产生收益 余额宝升级了为什么没有收益 如何搭建一个自己的在线教育平台? 2018年5月5号为什么升级后的余额宝没有收益 余额宝存了三天了。一点收益都没怎么回事 余额宝升级后利息没了是为什么? 余额宝升级后怎么恢复
  • 焦点

最新推荐

猜你喜欢

热门推荐