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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。