搜索命令
locate命令
搜索速度快,是按照数据库进行搜索的(数据库位置在/var/lib/mlocate/mlocate.db)
这个数据库是在半夜通过cron执行updatedb建立的,有时候新创建的文件使用locate来搜索文件搜索不到,可能是因为文件的索引还没有更新到数据库中,可以使用updatedb
来手动更新
find命令
虽然locate命令搜索速度很快,但是locate只能搜索文件名,不能根据权限、类型、时间来进行搜索,而使用find命令来搜索文件就可以进行细分了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #find 搜索路径 [选项] 搜索内容 find . db # 在当前目录和子目录下查找所有*.conf的文件 find . -name "*.conf" -print
------------------------ 选项 按文件名 -name 按文件名 -iname 按文件名,不区分大小写 -inum 按inode搜索 按大小 -size [+|-]大小 按照文件大小来搜索,-表示该时间以内,+表示该时间以外 按修改时间,以天为单位 -atime [+|-]时间 访问时间 -mtime [+|-]时间 数据修改时间 -ctime [+|-]时间 状态修改时间 按权限 -perm 按文件所有者和所属组 -uid 用户id -gid 组id -user 用户名 -group 组名 -nouser 没有所有者的文件 按类型 -type d目录 f普通文件 l软链接 按逻辑运算,可以使得多种条件组合 -a 与 -o 或 -not 非
|
find命令还可以进行组合操作
1 2 3 4 5
| #find 路径 [选项] 内容 -exec 命令2 {} \; #把find命令搜索到的结果交给-exec中命令2去处理 {}代表了find命令搜索到的结果 find . -name *.cfg -exec ls -l {} \; #find 路径 [选项] 内容 -ok 命令2 {} \; #ok与exec的区别在于 exec直接执行,ok会进行询问
|
grep命令
用于在文件中搜索符合条件的字符串,是最早的文本匹配命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #grep [选项] 字符串 文件名 grep "cd" 123.txt
-------------------------- 选项 -q 后跟关键词,此时查找时不会产生任何信息 -i 忽略大小写 -l 只显示文件名 -c 只输出匹配行的计数 -n 输出行号 -v 反向查找,显示不匹配的行 -w 全字匹配 --color=auto 搜索出来的文字颜色显示 -A 显示匹配行以及后面的n行 -B 显示匹配行以及前面的n行 -C 显示匹配行和它前后n行 -F 查找固定的字符串,如果匹配的文本中不包含正则,默认就使用了-F
|
cut命令
与grep相对应,grep是提取一行数据,cut是提取一列数据(列与列之间必须使用tab分隔)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| cut -f 2 stu.txt name 张三 李四
#提取多列 cut -f 1,2 stu.txt id name 1 张三 2 李四
-------------------- 参数 -f 列号 提取第几列 -d 分隔符 按照指定分隔符分隔列(默认是tab) -c 字符范围 n- 表示从第n个字符到行尾 n-m表示从第n个字符到第m个字符 -m表示从第1个字符到第m个字符
|
type命令
使用type命令可以查找到命令存储位置
1 2
| type java java is /usr/bin/java
|