可以说,在Linux中,find命令是前端开发人员必须把握的操作之一,除非你在使用WindowsServer。
在技术笔试中,它也是一个常见的话题。让我们看一个真实的问题:
若果在你的Linux服务器上有一个名为logs的目录,怎么删掉其中先前访问时间超过一年的日志文件?
这些情况很常见,但令人吃惊的是,并不是每位开发人员都能在笔试中清晰地写出这个命令。
答案:首先,我们须要使用cd命令步入相应的目录,之后,命令如下:
linuxmi@linuxmi:~/$find.-typef-atime+365-execrm-rf{};
假如你对上述命令还不完全理解,不用担忧。本文将介绍find命令的7个实用用途,你最终会把握它。假如你已然晓得了,阅读本文将是一个挺好的备考。
1、根据文件名或正则表达式查找文件
让我们从最简单的用法开始。要按特定名称搜索文件,命令如下:
linuxmi@linuxmi:~/$find.-namelinuxmi.sh
上述代码中的.符号表示当前路径。假如我们想要搜索另一个路径下的文件,只需指定即可:
linuxmi@linuxmi:~/$find/home/linuxmi/-namelinuxmi.png
怎样找到所有格式为png的图象?使用正则表达式:
find/home/linuxmi/-name"*.png"
默认情况下,find命令搜索常规文件,但最好指定类型以使一切更清晰:
find/home/linuxmi/-typef-name"*.png"
2、查找不同类型的文件
不仅搜索普通文件外,我们还可以通过指定-type选项来搜索其他类型的文件。
比如目录:
find.-typed-name"linuxmi*"
或则符号链接:
find.-typel-name"linuxmi*"
3、按特定的时间戳查找文件
要按特定的时间戳搜索文件,我们须要了解Linux系统中的3种不同时间戳:
访问时间戳(atime):文件先前被读取的时间。更改时间戳(mtime):文件内容先前被更改的时间。修改时间戳(ctime):文件的元数据linux 文件时间戳,比如所有权、位置、文件类型和权限设置等先前修改的时间。
所以,如同开始时提及的笔试问题一样,要搜索这些atime超过一年前的文件,我们可以编撰以下命令:
linuxmi@linuxmi:~$find.-typef-atime+365
假如我们须要找到mtime正好是5天前的文件,请不要包含+号,由于它表示“大于”。
linuxmi@linuxmi:~$find.-typef-mtime5
其实,+号表示“大于”,-号表示“小于”。为此,我们可以搜索ctime在5到10天之间的文件:
linuxmi@linuxmi:~$find.-typef-ctime+5-ctime-10
4、按文件大小查找文件
-size选项使我们能否按特定大小查找文件。我们可以使用以下约定指定其计量单位:
与按时间戳查找文件类似,+号表示“大于”qq for linux,-号表示“小于”。诸如linux 文件时间戳,要查找大小在10兆字节和1百兆字节之间的文件:
find.-typef-size+10M-size-1G
5、按权限查找文件
适当控制文件的权限是Linux管理员的重要任务。find命令的-perm选项可以帮助我们按特定权限搜索文件:
find.-typef-perm777
比如,上述命令将搜索所有具有777权限的文件,这意味着文件对其所有者、组和所有用户具有读、写和执行权限。
6、按文件所有者查找文件
这个任务很简单。我们只须要在-user选项手指定一个用户名。诸如,以下命令将找到所有属于linuxmi的文件:
find-typef-userlinuxmi
7、在查找文件后执行命令
在大多数情况下,我们希望在找到所需文件后执行一些后续操作linux模拟,比如删掉它们、检查它们的详尽信息等等。-exec命令使所有那些操作显得愈发简单。
如今,为了理解怎样使用它,让我们回到之前提到的笔试问题:
find.-typef-atime+365-execrm-rf{};
上述命令中-exec选项前面是rm-rf,用于删掉文件。{}是找到的结果的占位符。
注意:占位符{}特别重要,非常是假如你想要删掉文件。由于假如你不使用它,命令将对所有文件执行,而不仅仅是通过find命令找到的文件。
为了尝试一下,在终端上执行以下两个命令并检测它们的结果有哪些不同:
一个使用了占位符:
find.-typef-atime+5-execls{};
另一个没有使用:
find.-typef-atime+5-execls;
跟在-exec选项前面的命令必须以分号结束。正如我们所知,通配符字符用于取消单个字符的特殊涵义。在Linux中,反斜杠被用作通配符字符。因而,我们将其用于分号字符。
总结
阅读完find命令的7个用途后,之前提到的笔试问题现今看上去十分简单了。现今你能直接写出答案并清楚地解释吗?
find.-typef-atime+365-execrm-rf{};