Linux中find呼吁的用法汇总
副问题[/!--empirenews.page--]
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体系中,潜匿文件的名字以英文的句号开头,即 . 。以是要列出潜匿文件,只需加上简朴的文件名过滤前提就行了。
二、基于文件权限和属性的查找 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 属性的文件。
我们同样可以行使 1664 来查找配置了 粘滞位 (sticky bit)的文件。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |