Linux系统文件查找
使用linux系统难免会忘记文件所在的位置,可以使用以下命令对系统中的文件进行搜索。
locate命令:
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
命令用法: locate [OPTION]... PATTERN... 常用选项: -b, --basename 至匹配路径中的基名 -c, --count 统计出共有多少个符合条件的文件 -d, --database DBPATH 用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db) -e, --existing 只显示当前存在的文件条目 -L, --follow 当文件存在时跟随蔓延的符号链接 (默认) -h, --help 显示本帮助 -i, --ignore-case 匹配模式时忽略大小写区别 -l, --limit, -n LIMIT 限制为 LIMIT项目的输出 (或 计数) -m, --mmap 忽略向后兼容性 -P, --nofollow, -H 当检查文件时不跟随蔓延的符号链接 -0, --null 输出时以 NUL 分隔项目 -S, --statistics 不搜索项目,显示有关每个已用数据库的统计信息 -q, --quiet 不报告关于读取数据库的错误消息 -r, --regexp REGEXP 搜索基本正则表达式 REGEXP 来代替模式 --regex 模式是扩展正则表达式 -s, --stdio 忽略向后兼容性 -V, --version 显示版本信息 -w, --wholename 匹配完整路径名 (默认) 注:索引构建过程需要遍历整个根文件系统,极消耗资源
find命令:
Linux下find命令通过遍历指定起始路径下文件系统层级结构完成文件查找,查找速度略慢,但查找结果精确。
命令用法: find [OPTIONS] [查找起始路径] [查找条件] [处理动作] 查找起始路径:指定具体搜索目标起始路径,默认为当前目录 查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等标准进行,默认为找出指定路径下的所有文件; 处理动作:多符合查找条件的文件作出的操作,例如删除等操作,默认为输出至标准输出; 查找条件: 表达式:选项和测试 测试:结果通常为布尔型(“true”“false”) 根据文件名查找: -name “pattern” -iname “pattern”:不区分大小写 支持glob风格的通配符 -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名 -user USERNAME:查找属主指定用户的所有文件 -group GRPNAME:查找属组指定组的所有文件 -uid UID:查找属主指定的UID的所有文件 -gid GIU:查找属组指定的GID的所有文件 -nouser:查找没有属主的文件 -nogroup:查找没有属组的文件 根据文件的类型查找: -type TYPE: f:普通文件 d:目录文件 l:符号链接文件 b:块设备文件 c:字符设备文件 p:管道文件 s:套接字文件 组合测试: 与:-a,默认组合逻辑 或:-o, 非:-not,! 根据文件的大小查找: -size [+|-] #UNIT 常用单位:K,M,G 根据时间戳查找: 以“天”为单位: -atime [+|-]# -mtime -ctime 以“分钟”为单位: -amin -mmin -cmin 根据权限查找: -perm [/|-]mode mode:精确权限匹配 /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系 -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系 处理动作: -print:输出至标准输出,默认动作 -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的形象信息 -delete:删除查找到的文件 -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中 -ok COMMAND {} \;:对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认 -exec COMMAND {} \; :对查找到的每个文件执行由COMMADN表示的命令 注:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次传递给后面的命令,但是有些命令不能接受过长的参数,此时命令执行会失败,另一种方式可规避此问题: find | xargs COMMAND
whereis命令:
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
命令用法: whereis [-bmsu] [BMS 目录名 -f ] 文件名 常用选项: -b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。 -B 指定搜索可执行文件的路径。 -M 指定搜索帮助文件的路径。 -S 指定搜索源代码文件的路径。
type命令:
type 命令被用于判断另外一个命令是否是内置命令
命令用法: type [选项] [参数] 常用选项: -a 显示一个名字的所有可能 -t 判断一个名字当前是否是alias、keyword、function、builtin、file -p 查看一个外部命令的执行路径 -P 查看内部命令路径 alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令,Shell内建命令 file 文件,磁盘文件,外部命令 unfound 没有找到
which命令:
which命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果。也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置的命令。
命令用法: which [options] [--] programname [...] 常用选项: -a 查找全部内容,而非第一个文件 -n <文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 -p <文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。 -w 指定输出时栏位的宽度。 -V 显示版本信息。
原创文章,作者:641348038@qq.com,如若转载,请注明出处:http://www.178linux.com/61164
评论列表(1条)
知识点总结的非常不错,如果再配一些示例会更好,这样既能验证你的掌握程度,又能加深印象。