本文已参与「新人创作礼」活动,一起开启掘金创作之路。
文件查找
whereis 查找命令
在特定的目录内查找文件,速度比find快,但是没有查找到全部文件 格式 whereis [ -bmsu] 文件或目录
-l 列出whereis会查询的几个主要目录 -b 只找二进制格式的文件 -m 只找说明文件manual路径下 文件 -s 只找source 源文件 -u 查找不在上述三个项目中的其他文件
which查找命令
根据PATH环境变量的路径去找执行文件的名 格式 which [ -a ] 命令名 -a 将PATH目录中所有找到的结果都列出来,默认是只列出找到的第一个的
在centos下 可以查看别名,但在ubuntu下不行
查找文件 locate / updatedb
locate 不会去直接搜索磁盘,而是在系统数据库中查找文件,所以比较快速 数据库文件位置:/var/lib/mlocate/内 数据库默认是每天执行一次(不同版本不一样),如果新获取的文件后面收录进去,搜索不到 手动更新locate的数据库:updatedb
格式 :locate [ 选项 ] 文件名
-i 忽略大小写的差异 -c 不输出文件名,只计算文件的数量 -l 仅输出几行,若输出五行 则 -l 5 -s 输出locate所使用的数据库文件相关信息,包括记录的文件和目录数量 -r 后面接正则表达式的显示方式
查找文件find
查找文件,在磁盘中查找,比较万能,但是速度较慢 格式 : find [ PATH ] [ option ] [ation] find 路径 选项 参数 默认连同子目录一起搜索的,比较耗磁盘资源
不写路径时,默认在当前路径下找
1、与时间有关的选项:
共有-atime、-ctime、mtime,以-mtime说明
-mtime n : n为数字,意义为 n天之前的一天之内 修改过的文件
-mtime +n : 列出在n天之前(不包含第n天 ) 修改过的文件
-mtime -n : 列出在n天之内(含第n天)修改过的文件
-newer [ 一个存在的文件名] :列出比这个文件还要新的文件
举例 : 查找/etc 下面的文件,一天内修改过的文件
find /etc -mtime 0 #第0天之前,一天内,,,也就是今天
查找/etc 下面的文件,比passwd还新的文件
find /etc -newer /etc/passwd
2、与用户和用户组有关的参数
-uid n n为数字,是使用者的id ,就是uid,记录在pswwd里面
-gid n n为数字,是用户组的id ,就是gid,记录在group里面
-user 【name】 使用者的名称
-group 【name】 用户组的名称
-nouser 查找拥有者不在passwd的
-nogroup 查找用户组不在group中的
3、与文件权限及名称相关的参数
-name 【名字】 查找名为这个名字的文件 *代表多个未知字符,
-size [ + - ][size] +代表查找比size大的文件,-代表查找比size小的文件 如 -size +20k
-type [类型] 查找类型为这个的文件,正规文件(f) 设备文件(b、c) 目录(d) 链接(l)
-perm [权限] 查找权限刚好为这个权限的文件 如 -perm 4771
-perm -[权限] 查找权限包括这个权限的文件 如 -perm -4771
-perm /[权限] 查找权限包含这个权限的任一个的权限的文件 -perm /4771
4、其他
-exec 【命令】 这个选项后可接其他命令来处理查询的结果
-print 输出在屏幕,这是默认的
实例 查找出所有.c文件并删除
find -name *.c -exec rm -rf {} \;
这是固定格式
文件内容搜索
grep命令
可在文件内查找特定内容
格式为:grep [选项] ”模式“ [文件]
常用选项
-n 输出显示行号 -v 去除包含此参数的行,输出剩余行 -i 忽略字符大小写的差别
实例 在文件中搜索一个单词,命令会返回包含“match_pattern”的文本行:
grep gfx /etc/passwd
结果:
在多个文件中查找
grep "match_pattern" file_1 file_2 file_3 ...
不显示注释
grep -v "#" file_name
使用正则表达式 -E 选项
grep -E "[1-9]+" egrep "[1-9]+"