linux的find命令详解
Linux中的find命令是一个强大的工具,用于在指定目录下搜索文件。其操作路径、选项和实例都充满了与广度,能满足不同用户的多样化需求。下面我们来详细了解一下这个命令的各个方面。
一、语法简介
find命令的基本语法为:find path -option [ -print ] [ -exec | -ok command {} ]。其中,“path”表示搜索的目录路径,如用"."表示当前目录,用"/"表示系统根目录。
二、选项详解
1. `-print`:将匹配的文件输出到标准输出。
2. `-exec`:对匹配的文件执行该参数所给出的shell命令。格式为'command' { } ;,注意{ }和;之间的空格。
3. `-ok`:与-exec作用相似,但以一种更为安全的模式执行命令,会给出提示让用户确定是否执行。
find命令还提供了众多查找选项,如根据文件的时间属性、大小、类型等进行查找。例如:
`-amin n`:过去n分钟内被读取过的文件。
`-atime n`:过去n天内被读取过的文件。
`-cmin n`:过去n分钟内被修改过的文件。
`-ctime n`:过去n天内被修改过的文件。
还有其他选项,如`-empty`用于查找空文件,`-gid n`或`-groupname`用于查找特定GID或组名的文件等。
三、路径匹配与文件名匹配
find命令还提供了路径匹配和文件名匹配的功能。`-ipath p`和`-path p`用于匹配路径名称,而`-name name`和`-iname name`则用于匹配文件名称。值得注意的是,`-iname`会忽略大小写。还可以使用通配符进行模糊匹配。
四、文件类型与大小
通过`-type c`选项,我们可以查找特定类型的文件。例如,d表示目录,f表示一般文件,l表示符号连结等。而`-size n`选项则用于根据文件大小进行查找。
五、实例演示
1. 列出当前目录及其子目录下所有以".c"为扩展名的文件: find . -name ".c"。
2. 列出当前目录及其子目录下的所有普通文件: find . -type f。
3. 列出最近20天内更新过的文件: find . -ctime -20。
4. 在/var/log目录中查找更改时间在7日以前的普通文件,并在删除前询问: find /var/log -type f -mtime +7 -ok rm {} ;。
5. 查找当前目录中文件属主具有读、写权限,且文件所属组的用户和其他用户具有读权限的文件,并列出它们的详细信息: find . -type f -perm 644 -exec ls -l {} ;。
6. 查找系统中所有长度为0的普通文件,并列出它们的完整路径。 find / -type f -size 0 -exec ls -l {} \;。
Linux中的find命令功能强大、灵活多变,能够满足各种文件查找需求。无论是根据时间、类型、大小还是路径和名称,都能轻松实现。熟练掌握find命令,将极大提高在Linux系统中的工作效率。