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

Linux中find命令的使用示例

2017-04-19 18:00 344 查看
语法:find  [指定查找目录]  [查找规则]  [查找完后执行的action]

当前测试文件:
./a.txt
./A.txt
./backup/a.txt
./backup/A.txt
./backup/subbackup/a.txt
./backup/subbackup/A.txt

find a.txt		省略路径直接查找文件(只在当前目录下查找不会进入其子目录查找)
a.txt

find a.txt -exec ls -l {} \;	显示查找结果的详细信息
find a.txt -ok ls -l {} \;		效果同上但在显示详细信息前需确认(y or n)

find backup		省略路径直接查找目录(显示找到的目录及目录下的所有文件和子目录(子目录下有文件也会显示))
backup
backup/a.txt
backup/A.txt
backup/subbackup
backup/subbackup/a.txt
backup/subbackup/A.txt

find -name a.txt		在当前目录及其子目录下根据名字进行查找
./a.txt
./backup/a.txt
./backup/subbackup/a.txt

find -name subbackup	只显示所查找目录所在的路径
./backup/subbackup

find -iname a.txt		忽略大小写
./a.txt
./backup/a.txt
./backup/subbackup/a.txt
./backup/subbackup/A.txt
./backup/A.txt
./A.txt

find -maxdepth 2 -name a.txt 	限定搜索指定目录的深度(2:当前目录及下一级子目录(不包括第三级子目录))
./a.txt
./backup/a.txt

find -mindepth 2 -name a.txt	(2:从其子目录开始查找)
./backup/a.txt
./backup/subbackup/a.txt

find -mindepth 2 -maxdepth 2 -name a.txt	可限定一个区间,当前测试只能在第二层查找
./backup/a.txt

find -name "*up"							*:表示通配任意的字符(任意个数的任何字符)
./backup
./backup/subbackup

find -name "sub?ackup"						?:?表示通配任意的单个字符
./backup/subbackup

find -name "[abcd]ackup"					[]:表示通配括号里面的任意一个字符
./backup

find [path] -user 	具体的用户名
find [path] -group 	具体的组名
find [path] -uid	具体的用户id
find [path] -gid	具体的组id

find [path] -size 10M	查找指定目录下等于10M的文件
find [path] -size +10M	查找指定目录下大于10M的文件
find [path] -size -10M	查找指定目录下小于10M的文件

find [path] -perm 755 	查找指定目录下权限是755的文件(完全匹配)
find [path] -perm +755
将755转换成二进制(111 101 101),在1位上有一个与之匹配(0不匹配没关系)的则符合(如111 100 001)
find [path] -perm -755
将755转换成二进制(111 101 101),在所有1位上都与之匹配(0不匹配没关系)的则符合(如111 111 111 或 111 101 101)

find -name "a.txt" -a -user username		-a:同时满足两个条件
find -name "a.txt" -o -user username		-o:满足其中一个条件即可
find -not -name a.txt						-not:相反匹配

find -empty		查找空文件(0字节文件)

find -type d -name "*back*"		查找目录名含有back的目录
./backup
./backup/subbackup

-type
f     // 普通文件
d     //目录文件
l     //链接文件
b     //块设备文件
c     //字符设备文件
p     //管道文件
s     //socket文件

使用inode编号查找文件
touch "test.txt"
touch "test.txt "		此文件名多了个空格
用ll查看两者的文件名没有区别
用ls -il	查看其inode号
find -inum 34083474 -exec rm {} \;	根据inode号查找并删除

查找5个最大的文件
find . -type f -exec ls -s {} \; | sort -n -r | head -5

查找5个最小的文件
find . -type f -exec ls -s {} \; | sort -n  | head -5

根据文件的相关时间信息来查找
stat filename	查看文件的时间等详细信息
除了可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:
ls -lc filename 列出文件的 ctime (最后更改时间) 	change
ls -lu filename 列出文件的 atime(最后存取时间)	access
ls -l filename 列出文件的 mtime (最后修改时间)	modify

在windows下,一个文件有:创建时间、修改时间、访问时间。
而在Linux下,一个文件也有三种时间,分别是:访问时间(cat等命令查看内容)、修改时间(修改内容)、状态时间(手动更改文件的时间信息(touch -t)、权限等)

find -atime -2		2:2*24小时即2天,2天内有被访问的文件
find -amin -2       2:2分钟,2分钟内有被访问的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: