linux操作命令很多,为便于学习和查阅将分批进行分享,本期分享5个文件搜索操作的命令。
1、 find 文件或目录搜索
2、 locate 在文件资料库中查找文件命令
3、 which 搜索命令所在的目录及别名信息
4、 whereis 搜索命令所在的目录及帮助文档路径
5、 grep 在文件中搜索字符串匹配的行前输出
1、 find 在硬盘中搜索文件或目录
格式:find [参数][搜索范围] [匹配条件][处理动作]
参数:
-name 文件名: 按指定文件名查找
-iname:不区分字母大小写
-perm: 按执行权限来查找
-user 用户名:按文件属主来查找
-group 组名:按组来查找
-mtime –n/+n :按文件更改时间来查找,-n指n天以内,+n指n天以前
-atime –n/+n:按文件访问时间来查找,-n指n天以内,+n指n天以前
-ctime –n/+n:按文件创建时间来查找,-n指n天以内,+n指n天以前
-nogroup :查找无有效属组的文件,即在/etc/groups中不存在
-nouser :查找无有效属主的文件,即在/etc/passwd中不存在
-newer f1 !f2 :查找更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f :按文件类型查找是块设备、目录、字符设备、管道、符号链接、普通文件
-size [n] :根据文件大小查找,查长度为n块或字节的文件
-depth :按在进入子目录前先进行查完本目录,如:find /etc –depth -print
-fstype f1 !f2:查找更改时间比f1新但比f2旧的文件
-mount :查找文件是否跨越文件系统mount点
-follow: 查找遇到符号链接文件,则跟踪链接所指的文件。
-cpio:对匹配文件使用gcpio名,将他们备份到磁带设备中
-prune:忽略某个目录
处理动作:
-pint: 将查找到的文件输出到标准输出
-ls:输出文件的详细信息
-delete:删除查找到的文件
-fls /path/to/somefile :把查找到的文件的长格式信息保存到指定文件中
-ok command {} ; :对查到的文件执行command表示的命令,每个操作都由用户确认
-exec command {} ; :对查找到的每个文件执行由COMMAND表示的命令;
如:查找文件更改时间,并显示出来: find ./ -mtime –1 –ls
2、 locate 在文件资料库中查找文件命令
格式:locate [文件名]
参数:
-b, –basename — 仅匹配路径名的基本名称
-c, –count — 只输出找到的数量
-d, –database DBPATH — 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, –existing — 仅打印当前现有文件的条目
-1 — 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会使速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-0, –null — 在输出上带有NUL的单独条目
-S, –statistics — 不搜索条目,打印有关每个数据库的统计信息
-q — 安静模式,不会显示任何错误讯息。
-P, –nofollow, -H — 检查文件存在时不要遵循尾随的符号链接
-l, –limit, -n LIMIT — 将输出(或计数)限制为LIMIT个条目
-n — 至多显示 n个输出。
-m, –mmap — 被忽略,为了向后兼容
-r, –regexp REGEXP — 使用基本正则表达式
–regex — 使用扩展正则表达式
-q, –quiet — 安静模式,不会显示任何错误讯息
-s, –stdio — 被忽略,为了向后兼容
-o — 指定资料库存的名称。
-h, –help — 显示帮助
-i, –ignore-case — 忽略大小写
-V, –version — 显示版本信息
如:搜索etc目录下所有以sh开通的文件:locate /etc/sh
注:locate的搜索速度比find快,因为locate是在/var/lib/slocate/slocate.db数据库中查找,查找并不是实时的。数据库每天自动更新,手动更新命令为:updatedb。
3、 which 查看可执行文件的位置
格式:which [参数] [程序名称]
常用参数:
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同,但此处的包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
如:which ls 运行结果:alias ls='ls –color=auto' /bin/ls
4、 whereis 搜索命令所在的目录及帮助文档路径
格式:whereis [参数] [目录或文件名]
参数:
-b 只查找二进制文件
-B 只在设置的目录下查找二进制文件
-f 不显示文件名前的路径名称
-m 只查找说明文件
-M 只在设置的目录下查找说明文件
-s 只查找原始代码文件
-S 只在设置的目录下查找原始代码文件
-u 查找包含指定类型的文件
如:whereis bash 执行结果:bash: /bin/bash /usr/share/man/man1/bash.1.gz
5、 grep 在文件中查找匹配的字符串
格式:grep [参数] [文件或目录]
参数:
-a 或 –text : 不要忽略二进制的数据。
-A 或 –after-context= : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 –byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B 或 –before-context= : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 –count : 计算符合样式的列数。
-C 或 –context=或- : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d 或 –directories= : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e 或 –regexp= : 指定字符串做为查找文件内容的样式。
-E 或 –extended-regexp : 将样式为延伸的正则表达式来使用。
-f 或 –file= : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 –fixed-regexp : 将样式视为固定字符串的列表。
-G 或 –basic-regexp : 将样式视为普通的表示法来使用。
-h 或 –no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 –with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 –ignore-case : 忽略字符大小写的差别。
-l 或 –file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 –files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 –only-matching : 只显示匹配PATTERN 部分。
-q 或 –quiet或–silent : 不显示任何信息。
-r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同。
-s 或 –no-messages : 不显示错误信息。
-v 或 –invert-match : 显示不包含匹配文本的所有行。
-V 或 –version : 显示版本信息。
-w 或 –word-regexp : 只显示全字符合的列。
-x –line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定”-i”参数相同。
如:grep test *sh 在当前目录中,查找后缀有sh字样的文件中包含test字符串的文件,并输出结果。
如:grep –r update /etc/test 查找指定目录/etc/test及其子目录下所有文件中包含字符串update的文件,并输出结果。
本次分享结束,如有遗漏欢迎补充指正,谢谢查阅!!
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:11082411