神鰰神 發表於 2023-12-11 00:00:00

Linux中find命令的用法汇总

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