0%

linux搜索命令

搜索命令

locate命令

搜索速度快,是按照数据库进行搜索的(数据库位置在/var/lib/mlocate/mlocate.db)

1
locate abc.txt

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
#find 搜索路径 [选项] 搜索内容
find . db

------------------------
选项
按文件名
-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
#grep [选项] 字符串 文件名
grep "cd" 123.txt

--------------------------
选项
-i 忽略大小写
-n 输出行号
-v 反向查找
--color=auto 搜索出来的文字颜色显示

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个字符