本篇介绍Linux中常用的文件查找和定位工具,包括:find、locate、which、xargs等。
GNU find 命令参考《https://www.gnu.org/software/findutils/manual/find.html》。
1.find
-name <file name>|pattern 查找等于文件名。文件基本名,不含路径。支持模式匹配。
-iname <file name>|pattern 与name功能相同。区别是不区分文件名大小写。
-path <path>| pattern 查找文件路径以path开头或匹配模式的文件。
-ipath <path>| pattern 同上,路径不区分大小写。
名称模式匹配
文件名或文件路径的匹配模式,可以带或带引号(包括单引号和双引号)。建议带引号,如果不带,可能会被shell扩展,且最好带单引号。
支持的模式有以下几种:
name的模式:
* 0个或多个任意字符
? 任意单个字符
[string] 字符集合。支持字符范围,如[a-z],所有小写字母。排除某些字符的字符集合,用^或!做前缀的string。[^a-z@],除小写字母和@以外的所有字符。
转义字符。转义其后字符。
path的模式:
不同于命令行参数扩展,path的模式里,* 匹配任意字符,包括'/';且*可以出现在模式最前面。
-regex expr
-iregex expr
对文件完整路径匹配。按正则表达式匹配。iregex忽略大小写。
-regextype name
正则表达式类型。可以取emacs(默认)、posix-awk、posix-basic、posix-egrep、posix-extended。忽略此选项,默认emacs类型。
按时间范围查找