来自:https://www.aliyun.com/jiaocheng/122785.html
- Linuxfind命令是所有Linux命令中最有用的一个,它允许按名称、类型、用户、权限、时间等实时查找文件,还能对查找到的文件执行查看、删除、移动等操作。一、find官方手册使用manfind查看linuxfind命令的使用方法如下:NAMEfind--walkafilehierarchySYNOPSISfind[-H|-L|-P][-EXdsx][-fpath]path...[expression]find[-H|-L|-P][-EXdsx]-fpath[path...]
-
Linux find命令是所有Linux命令中最有用的一个,它允许按名称、类型、用户、权限、时间等实时查找文件,还能对查找到的文件执行查看、删除、移动等操作。
一、find官方手册
使用man find查看linux find命令的使用方法如下:
NAME find -- walk a file hierarchySYNOPSIS find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]...查找当前目录及子目录下素有文件和文件夹
find .二、按文件名查找
参数 描述 -name 按文件名查找 -iname 按文件名查找(不区分大小写) -regex 按正则条件查找 使用范例如下:
find . -name '*.jpg' -print #按名称查找当前文件夹下的.jpg文件find . -regex '.*/.jpg' #按正则查找当前文件夹下的.jpg文件注:
-print:假设find指令的回传值为true,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;三、按文件从属关系查找
find . -user 'Jerry' -print #查找当前目录及子目录下所有用户名为Jerry的文件其他从属关系
从属符号 描述 -user 按用户名查询 -group 按分组组名查询 -nouser 查找没有属主的文件 -nogroup 查找没有属组的文件 四、按文件类型查询
find . -type f -print #查找当前目录及子目录下所有的普通文件find . -type d -print #查找当前目录及子目录下所有的目录所有可查询的类型如下:
类型 功能 f 普通文件 d 文件夹 b 块设备文件 c 字符设备文件 l 连接文件 s 套接字文件 p 管道文件 五、按文件大小查找
find . -size 1M -print #精确查找当前目录及子目录下大小为1M的文件/文件夹find . -size -1M -print #查找当前目录及子目录下小于1M的文件/文件夹find . -size +1M -print #查找当前目录及子目录下大于1M的文件/文件夹文件大小单位:
单位符号 描述 b 块(512字节) c 字节 w 字(2字节) k 千字节 M 兆字节 G 吉字节 六、按时间查找
find . -mtime 1 -print #精确查找当前目录及子目录下前一天修改的文件find . -mtime +1 -print #精确查找当前目录及子目录下一天前修改的文件find . -mtime -1 -print #精确查找当前目录及子目录下一天内修改的文件时间选项如下:
时间类型 描述 -atime 以文件/文件夹访问时间(天)查找 -mtime 以文件/文件夹修改时间(天)查找 -ctime 以文件/文件夹数据元(如权限等)修改时间(天)查找 -atime 以文件/文件夹访问时间(分钟)查找 -mtime 以文件/文件夹修改时间(分钟)查找 -ctime 以文件/文件夹数据元(如权限等)修改时间(分钟)查找 -newer file 以file文件为条件,查找比其新的文件/文件夹 -not -newer file 以file文件为条件,查找比其老的文件/文件夹 七、按权限查找
find . -perm 644 -print #精确查找当前目录及子目录下ugo权限为644的文件/文件夹find . -perm +111 -print #精确查找当前目录及子目录下ugo用户中任意一类(或)有可执行权限的文件/文件夹find . -perm -111 -print #精确查找当前目录及子目录下ugo用户都拥有(与)可执行权限的文件/文件夹注:文件有owner(user)、group、others三种身份,分别用u、g、o表示,用a同时代表三种身份,用r、w、x代表读、写、执行三种权限,每种身份的权限按rwx顺序用一个8进制数表示,如777表示同时拥有读、写和可执行权限。
八、组合条件查询
find . -name '*.gif' -a -perm 644 #查找当前目录及子目录下格式为gif且权限为644的文件/文件夹find . -name '*.gif' -o -name '*.jpg' #查找当前目录及子目录下格式为gif或jpg的文件/文件夹find . -not -name '*.gif' #查找当前目录及子目录下格式不为gif的文件/文件夹find . -name '*.jpg' -o /( -name '*.txt' -a -empty /) #带括号的复杂查询, 查询jpg文件或空txt文件组合符号
组合符号 描述 -a 与,默认组合条件 -o 或 -not (!) 非 九、查询结果处理
find . -name '*.txt' -exec grep 'test' {} /; #查找当前目录及子目录下txt文件并查找文件中包含test的行查询结果处理动作:
处理操作 描述 -print 输出到标准输出,默认操作 -ls 以ls长文件形式输出到标准输出,默认操作 -delete 删除查找到的文件/文件夹 -fls /path/filename 以ls长文件形式存储到file中 -ok COMMAND {} /; 将查找到的文件传递给COMMAND命令,有提示 -exec COMMAND {} /; 将查找到的文件传递给COMMAND命令,无提示 十、其他查找
find . -empty -print #查找当前目录及子目录下的空文件/文件夹find . -empty -maxdepth 2 #查找当前目录及子目录下的空文件/文件夹, 且查找目录层级至多2级find . -empty -mindepth 1 #查找当前目录及子目录下的空文件/文件夹, 且查找目录层级至少1级