find命令详解##
Linux一切皆文件,而需要从整个系统中寻找到自己所需要的文件,就需要用到find命令,可以说是使用最多的Linux命令之一,而且find命令支持正则表达式匹配。
首先使用man来查看find命令手册。
find--search for files in a directory hierarchy
常用语法:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
常用选项:
-name:根据文件名查找;
-type:根据文件类型查找(f-普通文件;d-目录;l-符号链接;b-块设备;c-字符设备;s-套接字);
-size:根据文件大小查找(b-块<512字节>;c-字节;k-千字节;M-兆字节;G-吉字节);
-perm [-|/] MODE:根据文件权限查找
(MODE:精确查找;-MODE:文件权限完全包含此MODE;/MODE:任意一位匹配);
-user:根据文件属主查找;
-group:根据文件数组查找;
根据文件时间戳查找:
-atime(天)/amin(分钟):访问时间戳
-mtime(天)/mmin(分钟):修改时间戳
-ctime(天)/cmin(分钟):改变时间戳
举个栗子:
在/home目录下查找所有的txt文件
find /home -name "*.txt"
find /home -iname "*.txt"(忽略大小写)
在/home目录下查找所有的普通文件
find /home -type f
在当前目录查找所有10k的文件
find . -type f -size 10k
在当前目录查找所有大于10k的文件
find . -type f -size +10k
在当前目录查找所有小于10k的文件
find . -type f -size -10k
根据时间戳查找文件的使用方法相同,以访问时间戳举例,
当前目录最近7天内被访问过的文件
find . -type f -atime -7
当前目录7天之前前被访问过的文件
find . -type f -atime +7
当前目录恰好在七天前被访问过的文件
find . -type f -atime 7
在当前目录查找权限为600的文件
find . -type f -perm 600
此外,find命令还可以对查询到的文件结果集进行进一步操作
常用操作:
-print:打印结果到屏幕上;
-ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
-delete:删除查找到的文件;
-ok COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
-exec COMMAND {} ;:对结果集进行COMMAND命令的操作;
PS:{} ;为固定格式,其中{}代表查找到的结果集。