Linux中find命令的常规用法以及高级用法
程序员文章站
2022-07-01 23:25:21
...
Linux中find命令用来在指定目录下搜索文件,并可以执行指定的操作,Linux下find命令提供了相当多的查找条件,功能相当强大。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。本文根据实际应用总结了find命令的常规以及高级用法。
命令格式
find [ path ] [ -option ] [ -print ] [ -exec -ok ] {} \;
参数解析:
path(路径) :find命令所查找的目录路径。例如可以用.来表示当前目录,用/来表示系统根目录。
-option(选项)
-
-name: 按照文件名查找文件
-
-type: 按照文件类型查找文件,比如d表示目录;f表示普通文件
-
-size:按照文件大小查找文件(B、C、K、M、G)
-
-path:按照文件路径查找文件
-
-user:按照文件属主来查找文件
-
-group:按照文件所属的组来查找文件
-
-mtime:按照文件的更改时间来查找文件
-
-print:将匹配的文件输出到标准输出
-
-exec:对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {} ;,注意{}和\;之间的空格,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
[-ok]:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
常规用法
- 应用1:将/home目录及其子目录下所有延伸文档名是log(以.log结尾)的文件列出来。
[[email protected] home]#find /home -name "*.log"
- 应用2:在/home目录下查找以.txt结尾的文件名,忽略大小写(txt、TXT)
[[email protected] home]#find /home -iname "*.txt"
- 应用3:查找当前目录下所有的普通文件
[[email protected] home]#find ./ -type f
- 应用4:文件查找范围向下最大深度限制为3,列出所有文件
[[email protected] home]#find ./ -maxdepth 3 -type f
- 应用5:在/home目录以及子目录查找以log结尾的普通文件
[[email protected] home]#find /home -type f -name "*.log"
- 应用6:当前目录以及子目录搜索大于10KB的文件(磁盘空间快耗尽时查看大文件)
[[email protected] home]#find ./ -size +10K
- 应用7:在/home目录以及子目录匹配以test结尾的文件路径或者文件
[[email protected] home]#find /home -path "*test"
- 应用8:当前目录查找用户oracle拥有的所有文件
[[email protected] home]#find ./ -type f -user oracle
- 应用9:当前目录查找用户组ora拥有的所有文件
[[email protected] home]#find ./ -type f -group ora
- 应用10:当前目录查找超过七天内被访问过的所有文件(用于查找7天前的文件)
[[email protected] home]#find ./ -type f -atime +7
高级应用
- 应用1:查找当前目录以及子目录中以.log结尾的文件,使用ls命令显示详细信息
[[email protected] home]#find ./ -name "*.log" -exec ls -l {} \;
- 应用2:查找/home目录下以及子目录下更改时间在7日以前的文件并删除它们
[[email protected] home]#find ./ -type f -mtime +7 -exec rm {} \;
- 应用3:查找/home目录下以及子目录下更改时间在7日以前的以.log结尾的文件并删除它们,删除前进行提示确认
[[email protected] home]#find ./ -type f -name "*.log" -mtime +7 -ok rm {} \;
- 应用4:当前目录查找以.log结尾的文件移动到指定目录中,也适用于复制(cp)
[[email protected] home]#find ./ -type f -name "*.log" -exec mv {} /home/test \;
- 应用5:查以大写字母开头的文件
[[email protected] home]#find ./ -name "[A-Z]*" -print
- 应用6:查找所有的jpg 文件,并且压缩它
[[email protected] home]#find ./ -type f -name *.jpg -print | xargs tar -cvzf images.tar.gz
- 应用7:查找指定目录下压缩文件更改时间在7日以前的文件并删除它们。适用于Linux定时任务周期性备份数据库
[[email protected] home]#find /home/backup -type f -name "*.tar.gz" -mtime +7 -exec rm -rf {} \;