2020-06-11
linux
00
请注意,本文编写于 1784 天前,最后修改于 551 天前,其中某些信息可能已经过时。

目录

find
使用
语法
参数
实例

find

find(英文 : find)用于在指定目录下查找文件和目录

使用

需要权限

语法

find [path] [expression]

参数

path要查找的目录路径,也可多个路径,多路径使用空格分隔,未指定则默认为当前目录
experssion可选参数,用于指定查找的条件,可以是文件名,文件类型,文件大小
常用参数/options
experssion常用参数
-name pattern 按文件名查找,支持通配符*和?
-type 按文件类型查找,可以是f普通文件,d目录,l符号链接等
-size 按文件大小查找,支持使用+-表示大于小于,单位可以是c字节,w字数,b块数,k千字节,M兆字节或G(GB)
-mtime days 按照时间查找,支持使用+-表示指定天数前后,days是一个整数表示天数
-user username 按文件所有者查找
-group groupname 按文件所属组查找
时间参数
-amin n 查找在n分钟内被访问过的文件
-atime n 查找在 n天(n*24) 内被访问过的文件
-cmin n 查找 n分钟 内状态发生变化的文件例如权限
-ctime n 查找 n天 内状态发生变化的文件
-mmin n 查找 n分钟 内被修改过的文件
-mtime n 查找 n天 内被修改过的文件

原文

operators (decreasing precedence; -and is implicit where no others are given):
( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2
positional options (always true): -daystart -follow -regextype

normal options (always true, specified before other expressions):
-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
--version -xdev -ignore_readdir_race -noignore_readdir_race
tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
-nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN
-readable -writable -executable
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
-used N -user NAME -xtype [bcdpfls] -context CONTEXT

actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

实例

查找当前目录(.)下名为file.txt的文件

find . -name file.txt

查找根目录下所有apache开头的文件

find /* -name apache*

将当前目录及子目录下所有文件后缀为.c的文件列出来

find . -name "*.c"

将当前目录及子目录中的所有文件列出

find . -type f

查找/home 目录中大于1MB的文件

find /home -size +1M

查找/var/log 目录中在7天前修改过的文件

find /var/log -mtime +7

递归列出当前目录下前20天更新过的文件

shell
find . -ctime 20

递归列出当前目录下20天前及更早更新过的文件

find . -ctime +20

查找 目录var下,所属者root ,所属组为mail的所有文件

find /var/ -user root -a -group mail

查找 目录var下,所属者不为root lp gdm 的所有文件

find /var -not\(-user root -o -user lp -o -user gdm \)

查找 目录var下 ,更改时间七天内 不属于 root 和postfix 的文件

find /var -mtime -7 -not \( -user root -o -user postfix \)

查找 七天 访问过 没有所属者 没有所属组的文件

find / -atime -7 -nouser -o -nogroup

查找 目录 etc下 都没有写权限的文件

find /etc -not -perm /222

查找日志 更改时间21天内,类型文件

find /opt/am-admin/am-lite-server/target/blade/log -mtime 21 -type f -name "*.log"

查找日志并删除,删除过程记录到文本中(7天更改的.log文件删除)

find /var/log/services -mtime 7 -type f -name '*.log.*' -exec rm -fv {} \;>> /var/log/CleanLog.log;

注:

  1. find (GNU findutils) 4.7.0
  2. 默认路径是当前路径, 默认表达式为 -print
  3. 参考文档https://zhuanlan.zhihu.com/p/52616109