Find 命令

Find命令是一个常用的搜索命令,可以找到任何你想找到的文件.

基本语法:find [pathnames] [conditions]

按照文件名查找

  1. find . -name '*py*' #支持正则表达式
  2. ./hello-world.py
  3. ./49.pyc
  4. ./helloword.py
  5. ./helloword.pyc
  6. ./49-2.py
  7. ./49.py

按文件大小查找

  1. find . -type f -size +200 #默认是KB,也可以改成100M或者1G
  2. ./kis.tar.bz2
  3. ./kismet/Kismet-20151220-13-28-40-1.pcapdump
  4. ./kismet/Kismet-20151220-13-28-40-1.netxml
  5. ./kismet/Kismet-20151220-13-28-40-1.nettxt
  6. ./kismet.tar.gz
  7. ./system.map

-type 指定文件类型


type文件类型
f普通文件
d目录文件
b随机存储的设备文件,如硬盘,光盘等存储设备
c持续输入的设备文件,如鼠标,键盘
p有名管道
l链接文件(link)
ssocket文件

按修改时间查找

查找60天之前修改过的文件

  1. find . -mtime +60
  2. ./test.php
  3. ls -l test.php
  4. -rw-rw-r-- 1 mr mr 0 12 12 2001 test.php #我之前用touch修改过它

查找到了文件就删除

  1. find / -type f -name *.tar.gz -size +100M -exec rm -f {} \;

来我们详细说下这条命令, 首先是一个-type, 指定了文件类型, 然后跟着一个-name, 告诉find要找什么文件, 再接着是一个size,规定了要找的文件的大小, 最后的 -exec 是执行某项命令, 命令是rm -rf, 参数是 {}, 这个{}是啥意思? 它代表的就是find查找到的文件, 最后的\;是告诉find, 这条语句已经结束了,后面的事儿就不用它管了.

其实上面的语句完全可以用另一个参数来代替, -delete参数.

完整的命令如下:find / -type f -name *.tar.gz -size +100M -delete

扩展阅读