查找是最常用的Linux命令之一,它以命令行选项的形式提供了大量功能。 在本教程中,针对初学者,我们将讨论命令的基本用法以及它提供的一些有用的命令行选项。
注意 :除非另有说明 ,否则我们将在本教程中为我们所有与命令相关的示例使用以下文件。
1.如何列出当前目录及其子目录中的所有文件
find命令可以快速列出当前目录及其子目录中的所有文件。 为此,您只需运行命令即可,无需任何参数或选项。
find
这里是我们的输出:
当然,如果要列出其内容的目录不是您当前的目录,则必须提供完整的路径。
2.如何按名称搜索文件
如果需要,可以使用find命令以其名称搜索特定文件。 -name命令行选项可以让你这样做。 这里是语法:
find [dir-path] -name [filename]
例如,以下命令将在当前目录中搜索名为“testfile1.txt”的文件。
find . -name testfile1.txt
这是输出
同样,您可以在另一个目录中搜索该文件。 如果目录是当前工作目录的子目录,那么您无需执行任何操作,因为find命令会自动搜索所有子目录。
但是,如果它是一个单独的目录,那么你必须提供完整的路径。 例如,以下命令将搜索用户主目录中的文件:
find /home -name testfile1.txt
3.如何搜索特定类型的文件
find命令还允许您在目录(及其子目录)中搜索相同类型的文件。 例如,以下命令将搜索您当前工作目录中的所有.txt文件。
find . -name "*.txt"
如果您不知道,*是通配符。 有关通配符的更多信息,请来这里 。
4.如何执行不区分大小写的搜索
默认情况下,find命令执行区分大小写搜索(将大小写字符视为不同)。 但是如果需要,可以强制执行不区分大小写的搜索。 这可以通过使用-iname命令行选项来实现。
find -iname [filename]
例如,
find -iname testfile1.txt
这是输出
5.如何只显示与搜索模式不匹配的名称
如果需要,您甚至可以要求find命令打印与搜索模式不匹配的文件名(也称为反向搜索)。 您可以使用该功能访问此功能! 或- 不是操作员。
例如
find . -not -name “*.txt”
这是输出
所以你可以看到,除了.txt之外的所有扩展名都是在输出中产生的。
6.如何将搜索限制到目录级别
find命令还允许您将搜索限制在特定的目录深度。 一个命令行选项可以让你这样做是-maxdepth 。
例如,考虑以下目录结构:
现在假设,如果你想找到只搜索直到'find'子目录(意思是它应该忽略'youcl'子目录),那么你可以使用以下命令:
find . -maxdepth 3 -name "*.txt"
这里'-maxdepth 3'力量'find'进去,只搜索三个级别,第一级是你的顶级(或当前工作)目录。
这是命令的输出:
像maxdepth一样,还有一个名为mindepth的选项(用法:'-mindepth [N]')。 当使用此选项时,此选项将迫使find命令在开始搜索操作之前进入“N”级别
例如,
find . -mindepth 3 -name "*.txt"
所以,只搜索目录'find'和以下。
在类似的行上,如果要在属于2级到4级的子目录中搜索.txt文件,则可以使用以下命令。
find -mindepth 2 -maxdepth 4 -name "*.txt"
7.显示所有空文件
如果需要,您可以使用find命令显示特定目录(及其子目录)中的所有空文件。 这可以使用-empty选项来完成。
例如,要显示当前工作目录中的所有空文件,请使用以下命令:
$ find . -empty
8.如何搜索属于特定组的文件
find命令还可以搜索属于特定组的文件 - -group选项可以让您执行此操作。 例如,以下命令将列出属于“youcl”组的所有当前工作目录及其子目录中存在的文件。
find . -group youcl -name "*.txt"
以下是我上述命令的输出:
9.如何搜索特定用户拥有的文件
find命令还允许您基于所有权搜索文件 - -user选项可以让您执行此操作。 例如,以下命令将显示用户'himanshu'拥有的所有.txt文件(存在于当前目录中):
find . -user himanshu -name "*.txt"
10.如何搜索最近修改的文件
find命令允许您搜索最近修改的文件。 这可以使用-mmin选项来完成。 该选项要求您传递将被视为分钟数的数字。
所以例如,如果要在1分钟前搜索数据修改的.txt文件(在当前目录中),可以使用以下命令:
find . -mmin 1 -name "*.txt"
11.如何搜索最近比文件修改的文件
是的,find命令甚至可以让您搜索最近修改的特定文件的文件。 可以使用需要传递文件名(您要比较的文件名)的-newer选项来访问此功能。
以下是一个例子:
find . -newer ./examples/find/youcl/old.txt -name "*.txt"
12.如何在输出中只显示目录名
还有一个命令行选项,使find命令仅在输出中显示目录名称。 该问题的选项是-type ,您需要将d作为值传递给它。
例如:
find -type d
以下是我们上述命令的输出:
除了d ,还有几个可以作为值传递给-type选项的其他字母。 要了解他们,请转到find命令的手册页。
13.如何根据其索引节点号搜索文件
您还可以将一个inode号传递给find命令,并要求它找到相应的文件名(如果有的话)。 可以通过-inum选项访问此功能,该选项需要一个inode号作为值。
以下是一个例子:
提示 :您可以使用'ls -li'命令查找文件的inode号。
14.如何根据最后访问时间来搜索文件
find命令还可以根据上次访问的时间来搜索文件 - 您可以要求工具显示“n”分钟前上次访问的文件。 可以使用-amin命令行选项访问该功能。
例如,以下命令搜索在1分钟前访问的目录中的.txt文件:
find -amin 1 -name "*.txt"
结论
本教程中提到的示例应该提供一个关于find命令在基本级别上的工作以及它提供的一些有用的命令行选项的好主意。 请在系统上尝试这些示例,还可以浏览该工具的手册页。