find命令基本用法
find
命令是Linux系统中用于在文件系统中搜索文件和目录的强大工具。它可以根据多种条件来筛选文件,包括文件名、文件类型、文件大小、文件修改时间等。
常见选项和参数
-name <filename>
:按照文件名进行搜索。-type <file_type>
:按照文件类型进行搜索,其中<file_type>
可以是f
(普通文件)、d
(目录)、c
(字符设备文件)、b
(块设备文件)、l
(符号链接文件)等。-size <size>
:按照文件大小进行搜索,<size>
可以用c
(字节)、k
(千字节)、M
(兆字节)等单位表示。-user <username>
:按照文件所有者进行搜索。-group <groupname>
:按照文件所属组进行搜索。-atime <n>
:查找在过去n
天内被访问过的文件。-mtime <n>
:查找在过去n
天内被修改过的文件。-ctime <n>
:查找在过去n
天内状态发生变化的文件(例如权限)。-exec <command> {} \;
:对找到的每个文件执行指定的命令。
示例
- 查找当前目录下名为
file.txt
的文件:
find . -name file.txt
find / -type f -name filename.txt 查询某文件的路径
- 将当前目录及其子目录下所有文件后缀为
.c
的文件列出来:
find . -name "*.c"
- 查找
/home
目录下大于1MB的文件:
find /home -size +1M
- 查找
/var/log
目录下在7天前修改过的文件:
find /var/log -mtime +7
- 查找过去7天内被访问的文件:
find /path/to/search -atime -7
- 在当前目录下查找最近20天内状态发生改变的文件和目录:
find . -ctime 20
- 将当前目录及其子目录下所有20天前及更早更新过的文件列出:
find . -ctime +20
- 查找
/var/log
目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} ;
- 查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} ;
- 查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} ;
- 找并执行操作(例如删除):
find /path/to/search -name "pattern" -exec rm {} ;
思考
将/usr/local/test目录下大于100k小于500k的文件转移到/tmp目录下
find [路径] -type [类型] -exec [命令] '{}' \;
find /path/to/directory -type f -name "*.txt" -exec ls -l {} \
find / -name mysql -exec rm -rf {} \;查找mysql相关包然后删除
将/usr/local/test 目录下大于 100k 小于 500k的文件转移到/tmp 目录下
cd /usr/local/test
find . -size +100k -size -500k -type f -exec mv {} /tmp \;
-exec mv {} /tmp \;对每个找到的文件执行 mv 命令,将其移动到 /tmp 目录
\; 是 find 命令的语法要求,表示 -exec 参数的结束
写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。
#!/bin/bash
# 查找最后创建时间是3天前的,后缀是*.log的文件并删除
find /目录路径/ -ctime +3 -type f -iname "*.log" -exec rm -f {} \;
chmod +x 脚本名.sh
把当前目录小于108k的文件移动到/tmp下
find . -type f -size -108k -exec mv {} /tmp/ \;
查找3天以前访问过的文件并且拷贝他们到/backup目录下
find / -atime +3 -exec cp {} /backup \;
find / -atime +3 | xargs cp -i {} /backup
根据访问修改更改时间查找文件
如果服务器被入侵,你可以利用find 查询到近期被访问、修改、更改的文件
备注:min=分钟 time=天 修改注重于对内容的修改,更改注重于对权限的更改
atime(Access Time):文件最近被访问时间
mtime(Modify Time):文件最近内容修改时间
ctime(Change Time):文件最近权限和属性改变时间
# find . -amin -60 查找1个小时内被访问过的文件
# find / -atime -1 查找1天内被访问过的文件
# find . -mmin -60 查找在1个小时内被修改的文件
# find / -mtime -1 查找在1天内被修改的文件
# find . -cmin -60 查找1小时内状态被改变的文件
# find / -ctime -1查找1天内状态被改变的文件