一、简介
1、Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
2、Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如文件名、文件类型、权限、拥有者、修改日期/时间、文件大小等等。在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找文件。
3、在绝大多数Linux发行版中,你都可以直接使用 find 命令而无需进行任何安装操作。如果你想在linux系统的命令行中变得特别高效,那么 find 是你必须掌握的命令之一。
4、find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。
二、find命令的语法格式
find path -option [ -print ] [ -exec -ok command ] {} \;
find [path] [option] [expression]
find [目录路径] [参数] 文件名
列出当前目录和子目录下的所有文件
find
命令效果相同
find .
#查找/目录下文件名为file的文件
find / -name file
path,表示find命令所查找的目录,比如用.来表示当前目录,用/来表示系统根目录;
-print,表示将查找到的文件输出到标准输出,如果没有指定,默认是该模式;
-exec,对查找到的文件执行该参数所给出的shell命令,相应命令的形式为'command' {} ;,注意 {} 和 \ ; 之间的空格;
-ok,和-exec选项功能类似,但该选项更安全,在执行每一个命令之前,都会给出提示,让用户来确定是否执行;
查找/etc目录中文件名为passwd的文件
find /etc/ -name passwd
查找/etc目录中文件名为shadow的文件
find /etc/ -name shadow
查找/etc目录中文件名以httpd开头,结尾不管是什么的文件
find /etc -name httpd*
查找/etc目录中文件名以.conf文件结尾的文件
find /etc/ -name *.conf
mkdir shell
cd shell/
touch user.sh
touch variable.sh
chmod +x user.sh
查找/root/shell目录下权限为 755的文件
find /root/shell -perm 755
查找/root/shell目录下权限为 644的文件
find /root/shell/ -perm 644
创建jack用户
useradd jack
chown jack.jack user.sh
按照文件属主来查找文件
find . -user jack
find /root/shell -user jack
按照文件所属的组来查找文件
find ./ -group jack
find /root/shell/ -group jack
mkdir {a..e}
按照文件类型去查找,d是目录,f是普通文件
find /root/shell/ -type d
find /root/shell/ -type f
按文档更改时间来查找文档,-n指n天以内,+n指n天以前(modify)
查找/etc目录下修改时间7天以前的文件
find /etc/ -mtime +7
查找创建时间在15天内的文件
find /etc/ -ctime -15
按照文件大小查找
find /usr/local/ -size -50
find /usr/local/ -size -2k
find /etc -type f -size +10k
find /etc -type f -size +500k
find /etc/ -type f -size +500m -1G
查找/etc目录下文件大小大于500kb的文件
find /etc -type f -size +500k |xargs ls -lh
mkdir /backup
find /etc/ -type f -size +500k -exec cp {} /backup/ \;
将backup目录下的所有15天以前的普通文件全部删除掉
find /backup/ -type f -mtime +15 -exec rm -f {} \;