每天一个Linux命令 - 【find】
命令:find
用途:查找文件并执行指令的操作
【语法】:find [路径] [选项] [参数]
【功能介绍】:find命令在指定的目录下查找文件。find命令还能够对查找到的文件执行的指定的操作,通过调用其他Linux命令来实现。
【选项说明】
-name name 表示包含指定匹配模式的文件名。
-iname name 表示包含指定匹配模式的文件名,不区分大小写。
-type x (x表示文件类型)。 指定文件类型查找文件。b块设备文件,c字符设备文件,d目录,p命名管道,f普通文件,l符号连接文件,s网络套接字文件....
-gid (组id) 查找属于指定组id的所有文件
-uid (用户id) 查找属于指定用户id的所有文件
-group (组名) 查找属于指定组名的所有文件
-user(用户名) 查找属于指定用户名的所有文件
-empty 查找文件大小为0的目录或文件
-path 查找指定的路径查找模式查找文件
-perm 按照指定的权限模式查找目录和文件
-size 按照指定文件的大小查找文件。文件大小的默认单位为块。每块512字节。
-amin/-cmin/-mmin [+-]n 查找文件最后一次访问时间/状态改变时间/修改的时间 其中-n表示访问时间为n分钟以内,+n表示访问时间距今n分钟以前。n表示恰好为n分钟
-atime/-ctime/-mtime [-+]n 同上,分钟改为天。
-print 在标准输出设备上显示查找到的文件信息。这是默认选项可以省略
-fprintf filename 不在终端打印查找到的文件信息。而是将其保存到指定的文件中。
-exec command {} \; 用指定的Linux命令操作查找到的文件。{}表示将查找到的文件作为命令的参数,\;是固定字符,放在find命令的最后。 不提醒用户进行确认。
-ok command {} \; 同上,提醒用户进行确认。
【经验技巧】
find命令支持逻辑运算符与(and)或(or)非(not)组成的复合查询条件。 选项-a为默认的选项。逻辑与表示当所有给定的条件都满足是符合查找条件。逻辑或表示只要所给的条件中有一个满足时符合查找条件。逻辑非表示查找所给的条件相反的文件。
【示例1】 -name -type
查找tmp目录下,文件名为1.txt
find /tmp -name 1.txt
查找tmp目录下,文件格式为普通文件
find /tmp -type f
查找/tmp目录下,文件类型非目录,文件名包含“.txt”的文件
find /tmp \! -type d -name “*.txt”
【示例2】 -path -perm
查找/tmp目录下 dir1目录下的包含.sh的文件
find /tmp -path "/tmp/dir1*" -name "*.sh"
查找/tmp目录下 除了dir1目录以外其他目录下包含*.sh的文件
find /tmp \! -path "/tmp/dir1*" -name "*.sh" (!取反的意思)
查找/tmp目录下,所有权限为755的文件
find /tmp -perm 755
【示例3】-exec command {} \; -ok command {} \;管道符
查找/tmp目录下 文件名包含.txt的文件并删除
find /tmp -name "*.txt" -ok rm -rf {} \;
查看/tmp目录下 文件的总数量
find /tmp -type f |wc -l
查看/tmp 目录下 文件名包含.txt的文件并查看文件的前5行
find /tmp -name "*.txt" -exec head -5 {} \;