Linux下查找文件:find命令

本文介绍Linux中常用的文件搜索工具“find”命令。
find命令用于在指定目录中搜​​索满足一定条件的文件。
使用形式:find[路径][表达式][动作]。
在实际应用中,find命令可能有更多的选项,但可能不会经常使用。
简化的命令格式:find[路径][选项][测试条件][操作]。
搜索路径:搜索命令在指定目录及其子目录中进行搜索。
如果不指定路径,则默认使用当前路径。
测试表达式:包含选项、测试条件和动作。
选项返回true,测试条件用于确定文件,操作也返回true或false。
运算符:运算符常在表达式中用于连接多个选项、测试条件和操作,例如:B.与(-a)或或(-o)。
默认值为AND运算。
一般测试条件:根据文件名、权限和排除的目录进行过滤。
根据文件名搜索:使用通配符(例如*、?、[])进行文件名匹配。
基于文件权限的过滤:三种匹配模式(精确匹配、全部匹配、至少一项匹配)。
排除目录:使用-prune操作排除已知不包含所需文件的目录。
运算符优先级:-a优先于-o。
添加括号以调整优先级并确保执行预期的操作。
通过搜索命令,用户可以根据自己的实际需要高效地查找特定文件,简化文件管理流程。

Linux中find命令的用法汇总

Linux系统上的find命令在搜索文件时非常有用和方便。
查找文件是基于不同的信息,例如权限、所有者、修改日期/时间、文件大小等。
在本文中,我们将学习如何使用findfile命令及其提供的选项。
在大多数Linux发行版中,您可以直接找到该命令,无需安装操作。
如果你想在Linux命令行系统中变得最高效,你会发现有一个命令是你所需要的。
find命令的基本语法如下:$find[路径][选项][表达式]1.基本用法1.列出当前目录及子目录中的所有文件。
$find../abc.txt./subdir./subdir/how.php./cool.php该命令与以下命令$find.$find.-print2相同。
该命令将查找当前目录下的文件夹中的文件,默认列出所有文件。
$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”),最好忽略尾部斜杠。
但是,如果文件夹链接(符号链接)指向另一个位置,则必须在末尾键入执行程序以查找适当的命令(find./test/)。
查找文件名时忽略大小写通常很有用。
要忽略大小写,只需使用inama选项而不是名称。
$find./test-iname"*.Php"./test/subdir/how.php./test/cool.php用双引号或单引号括住匹配模式(文件名参数)总是有用的。
这样做有时效果很好,有时却产生奇怪的结果。
3.限制研究深度。
find命令默认会递归搜索整个目录树,既费时又费资源。
幸运的是,搜索目录的深度可以手动指定。
例如,如果我们只想查找一层或两层内的子目录,我们可以定义maxdepth选项。
在Duo的例子中,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上面的命令将查找所有以c开头且不包含.php扩展名的文件。
这个例子显示了搜索命令附带的搜索表达式有多么强大。
OR运算符当我们使用多个搜索条件时,查找命令会通过AND运算符将它们组合起来,即只列出满足所有条件的文件。
但是,如果您需要研究OR运算是的,您可以添加-o开关。
$find-name'*.php'-o-name'*.txt'./abc.txt./subdir/how.php./abc.php./cool.php上面的命令查找所有以.php结尾的文件或以.txt结尾的文件。
6.仅搜索文档或目录。
有时我们只想找到具有特定名称的正确文件或目录。
$find./test-nameabc*./test/abc.txt./test/abc仅搜索文件$find./test-typef-name"abc*"./test/abc.txt仅搜索目录$find./test-typed-name"abc*"./test/abc非常有用且方便!7.同时在多个目录中搜索。
检查$find./test./dir2-typef-name"abc*"./test/abc.txt./dir2/abcdefg.txt并列出两个给定目录中的文件。
8、查找Linux系统中的隐藏文件,隐藏文件的名称以英文句点开头,即。
因此要过滤隐藏文件,只需添加一个简单的文件名过滤器即可。
$find~-typef-name".*"2.根据文件权限和属性进行搜索9.查找已定义权限的文件,通过指定perm选项,我们可以按特定权限查找文件。
下面的示例查找具有0664权限的所有文件。
$find.-typef-perm0664./abc.txt./subdir/how.php./abc.php./cool.php我们可以使用这个命令来查找导致安全问题的错误权限。
它们可以与反向查找结合起来进行权限检查。
$find.-typef!-perm0777./abc.txt./subdir/how.php./abc.php./cool.php10.一个文件#find/-perm2644我们还可以使用1664来查找具有虎钳组的文件。
除了接受数字参数之外,#find/-perm1644perm选项还接受chmod命令中的模式字符串。
在下面的查找中,我们对数字使用不同的语法。
$find/-maxdepth2-perm/u=s2/dev/null/bin/mont/bin/su/bin/ping6/bin/fusermount/bin/ping/bin/umount/sbin/mount.ecryptfs_private注意:由于权限不足目录上的任何内容都会被拒绝2命令中使用/dev/none清除输出中错误的访问结果。
11.查找只读文件$find/etc-maxdepth1-perm/u=r/etc/etc/thunderbird/etc/brltty/etc/dkms/etc/phpmyadmin...outputtruncated...12.查找可执行文件$查找/bin-maxdepth2-perm/a=x/bin/bin/preseed_command/bin/mont/bin/zfgrep/bin/tempfile...输出被截断...3、根据文件所有者和用户组进行搜索13、查找用户自己的文件的文件在当前目录中搜索文件bob。
$find.-userbob../abc.txt./abc./subdir./subdir/how.php./abc.php在命名用户的同时,我们也可以为文件命名。
$find.-userbob-name'*.php'很容易看出,我们可以通过添加过滤条件来缩小文件的范围。
14、查找与用户自己组相关的文件#find/var/www-groupdeveloper4、根据时间和时间进行研究除了上面提到的条件外,问题的另一个重要条件是修改和访问时间。
文件当我们想知道在一定时间内哪些文件发生了变化时,这个搜索条件会非常方便。
让我们看几个例子。
15.查找过去N天内更改过的文件#find/-mtime5016#查找/-mtime+50-mtime-10018.查找在过去N分钟内状态发生更改的文件。
$find/home/bob-cmin-6019.#find/-mmin-6020过去1小时内添加的页面#finds/-amin-605.按大小size搜索21.查找特定大小的文件$find/-size50M22在size$find/-size中查找特定大小的文件+50M-尺寸100M23。
要查找最大和最小的文件我们可以使用ls和mode命令来查找最大或最小的文件。
以下命令使用此类命令的-r选项,将项目从大到小排序。
通过header过滤命令后,会显示当前目录及子目录中最大的5个文件。
查询的执行速度总结这取决于文件的数量。
$find.-typef-execls-s{}\;|sort-n-r|head5同样,我们可以去掉命令模式的-r选项,按升序排列,显示最小的5条记录。
$find.-typef-execls-s{}\;|sort-n|head524.-空的下面给出两个例子。
25、使用ls命令列出文件信息。
一旦我们找到使用该文件的命令,我们只能看到该文件的路径。
如果您想浏览该文件以获取更多信息,可以将其与命令结合起来。
$f.-execls-ld{}\;66:26./subdir-rw-rw-r-1启蒙-0Aug1116ug1119:13./abc.php-rw-rw-r--1enlightenedenlightened0Aug1116:25./cool.php26。
$find/tmp-typef-name"*.txt"-execrm-f{}\;也可以删除列表,只需将-type后面的f改为d,并在rm命令后面加上-r即可。
$find/tmp-typed-name"dirToRemove"-execrm-r-f{}\;本文由Wray翻译,略有删减。
考虑到原文存在一些错误,并为了便于读者理解,采用意译。
请告诉我错误,谢谢。