Linux指令篇 - find命令_Linux

1 . 查找txt和pdf文件

 

find . \( -name "*.txt" -o -name "*.pdf" \) -print

演示结果:

Linux指令篇 - find命令_find_02

2.  正则方式查找.txt和pdf

 

find . -regex  ".*(.txt|.pdf)$"

-iregex: 忽略大小写的正则

3 . 否定参数

查找所有非txt文本

find . ! -name "*.txt" -print

演示结果:

Linux指令篇 - find命令_Linux_03

4 . 指定搜索深度

打印出当前目录的文件(深度为1)

find . -maxdepth 1 -type f

演示结果:

Linux指令篇 - find命令_# Linux_04

5.  定制搜索

 

5.1 按类型搜索

 

-type    b/d/c/p/l/f         #查是块设备[b]、目录[d]、字符设备[c]、管道[p]、符号链接[l]、普通文件[f]

 

//只列出所有目录
find . -type d -print  

演示结果:

Linux指令篇 - find命令_linux_05

5.2 按时间搜索

 

-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)

时间参数:

参数 参数释义
+n n 天以外修改的文件
n 正好 n天 修改的文件
-n n 天以内修改的文件

举例1: 查询 /etc 目录下,5天以内修改 且以 conf 结尾的文件。 find /etc -mtime -5 -name '*.conf'

举例2: 查询 /etc 目录下,10天之前修改,且属于 yangyang 的文件。  find /etc -mtime +10 -user yangyang

演示7天以内被访问过的所有文件:

find . -atime -7 -type f -print

演示结果:

Linux指令篇 - find命令_Linux_06

5.3 按大小搜索

w字 k M G

寻找大于2k的文件

find . -type f -size +2k

 

5.4 按权限查找

 

//找具有可执行权限的所有文件
find . -type f -perm 644 -print 

 

5.5 按用户查找

 

// 找用户weber所拥有的文件
find . -type f -user weber -print

 

5.6  找到后的后续动作

 

5.6.1 删除

删除当前目录下所有的swp文件:

find . -type f -name "*.swp" -delete

 

5.6.2 执行动作(强大的exec)

 

//将当前目录下的所有权变更为weber
find . -type f -user root -exec chown weber {} ; 

注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;

eg:将找到的文件全都copy到另一个目录:

find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD ;

 

5.7  结合多个命令

tips: 如果需要后续执行多个命令,可以将多个命令写成一个脚本。然后 -exec 调用时执行脚本即可;

-exec ./commands.sh {} ;

-print的定界符

默认使用' '作为文件的定界符;

-print0 使用''作为文件的定界符,这样就可以搜索包含空格的文件;