您的位置:首页 > 运维架构 > Linux

Linux中find命令的常规用法以及高级用法

2020-01-14 22:27 253 查看

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结尾)的文件列出来。
[root@dbtest home]#find /home -name "*.log"
  • 应用2:在/home目录下查找以.txt结尾的文件名,忽略大小写(txt、TXT)
[root@dbtest home]#find /home -iname "*.txt"
  • 应用3:查找当前目录下所有的普通文件
[root@dbtest home]#find ./ -type f
  • 应用4:文件查找范围向下最大深度限制为3,列出所有文件
[root@dbtest home]#find ./ -maxdepth 3 -type f
  • 应用5:在/home目录以及子目录查找以log结尾的普通文件
[root@dbtest home]#find /home -type f -name "*.log"
  • 应用6:当前目录以及子目录搜索大于10KB的文件(磁盘空间快耗尽时查看大文件)
[root@dbtest home]#find ./ -size +10K
  • 应用7:在/home目录以及子目录匹配以test结尾的文件路径或者文件
[root@dbtest home]#find /home -path "*test"
  • 应用8:当前目录查找用户oracle拥有的所有文件
[root@dbtest home]#find ./ -type f -user oracle
  • 应用9:当前目录查找用户组ora拥有的所有文件
[root@dbtest home]#find ./ -type f -group ora
  • 应用10:当前目录查找超过七天内被访问过的所有文件(用于查找7天前的文件)
[root@dbtest home]#find ./ -type f -atime +7

高级应用

  • 应用1:查找当前目录以及子目录中以.log结尾的文件,使用ls命令显示详细信息
[root@dbtest home]#find ./ -name "*.log" -exec ls -l {} \;
  • 应用2:查找/home目录下以及子目录下更改时间在7日以前的文件并删除它们
[root@dbtest home]#find ./ -type f -mtime +7 -exec rm {} \;
  • 应用3:查找/home目录下以及子目录下更改时间在7日以前的以.log结尾的文件并删除它们,删除前进行提示确认
[root@dbtest home]#find ./ -type f -name "*.log" -mtime +7 -ok rm {} \;
  • 应用4:当前目录查找以.log结尾的文件移动到指定目录中,也适用于复制(cp)
[root@dbtest home]#find ./ -type f -name "*.log" -exec mv {} /home/test \;
  • 应用5:查以大写字母开头的文件
[root@dbtest home]#find ./ -name "[A-Z]*" -print
  • 应用6:查找所有的jpg 文件,并且压缩它
[root@dbtest home]#find ./ -type f -name *.jpg -print | xargs tar -cvzf images.tar.gz
[root@dbtest home]#find /home/backup -type f -name "*.tar.gz" -mtime +7 -exec rm -rf {} \;
  • 点赞
  • 收藏
  • 分享
  • 文章举报
孑木文学 发布了30 篇原创文章 · 获赞 4 · 访问量 1463 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: