2.5、搜索命令
2.5.1、whereis
搜索系统命令的命令,而不能搜索普通文件
- 命令名称:whereis
- 英文原意:locate the binary,source,and manual page files for a command
- 所在路径:/usr/bin/whereis
- 执行权限:所有用户
- 功能描述:查找二进制命令、源文件和帮助文档的命令
[root@xyc ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
2.5.2、which
搜索系统命令的命令,而不能搜索普通文件
- 命令名称:which
- 英文原意:shows the full path of (shell) commands.
- 所在路径:/usr/bin/which
- 执行权限:所有用户
- 功能描述:列出命令的所在路径,和别名
[root@xyc ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
whereis
和 which
的区别:
2.5.3、locate
按照文件名搜索普通文件
- 命令名称:locate
- 英文原意:find files by name
- 所在路径:/usr/bin/locate
- 执行权限:所有用户
- 功能描述:按照文件名搜索普通文件
优缺点:
#当有些刚创建的文件,通过locate命令无法查到时,是因为数据库还没有更新
[root@xyc ~]# updatedb #更新数据库
[root@xyc ~]# cat /etc/updatedb.conf #查看数据库 配置文件
PRUNE_BIND_MOUNTS = "yes"
# 开启搜索限制
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
#在locate执行搜索时,禁止搜索这些文件系统类型
PRUNENAMES = ".git .hg .svn"
#在locate执行搜索时,禁止搜索带有这些拓展名的文件
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"
#在locate执行搜索时,禁止搜索这些系统目录
2.5.4、find
- 命令名称:find
- 英文原意:search for files in a directory hierarchy
- 所在路径:/usr/bin/find
- 执行权限:所有用户
- 功能描述:在目录中搜索文件
#1.按照文件名搜索
[root@xyc ~]# find 搜索路径 [选项] 搜索内容
选项:
-name: 按照文件名搜索
-iname:按照文件名搜索,不区分文件名大小写
-inum: 按照inode号搜索
#2.按照文件大小搜索
[root@xyc ~]# find 搜索路径 [选项] 搜索内容
选项:
-size [+|-] 大小 : 按照指定大小搜索文件
# +:表示比指定大小还大的文件; -:表示比指定大小还小的文件
#3.按照修改时间搜索
#Linux中的文件有访问时间(atime)、数据修改时间、状态修改时间
[root@xyc ~]# find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间; 按照文件状态修改时间搜索
-5:代表5天内修改的文件
5:代表5~6那一天修改的文件
+5:代表6天前修改的文件
#4.按照权限搜索
[root@xyc ~]# find 搜索路径 [选项] 搜索内容
-perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
-perm - 权限模式: 查找文件权限全部包含“权限模式”的文件(所有权限都比指定权限大的文件)
-perm + 权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件(只要有一个权限比指定权限大的文件)
#5.按照所有者和所属组搜索
[root@xyc ~]# find 搜索路径 [选项] 搜索内容
选项:
-uid 用户ID: 按照用户ID查找所有者是指定ID的文件
-gid 组ID: 按照用户组ID查找所属组是指定ID的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件,常用,主要用于查找垃圾文件
#6.按照文件类型搜索
[root@xyc ~]# find 搜索路径 [选项] 搜索内容
选项:
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软连接文件
#7.逻辑运算符
[root@xyc ~]# find 搜索路径 [选项] 搜索内容
选项:
-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非
[root@xyc ~]# find . -size +1k -a -type f
#8.其他选项
1. -exec 选项
[root@xyc ~]# find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \;
# 把find命令的结果交给由”-exec“调用的命令2来执行。
#例:
[root@xyc ~]# find . -size +1k -a -type f -exec ls -lh {} \;
-rw-r--r-- 1 root root 20K Mar 4 16:48 ./install.sh
-rw------- 1 root root 24K Mar 21 15:25 ./.cache/pip/http/b/b/8/7/6/bb876b2e6a22c2739002e9ef3388ae978b7a6192a19fe67d8b0030f2
-rw------- 1 root root 1.2K Apr 24 00:54 ./.viminfo
-rwxr-xr-x 1 user1 root 8.4K Jan 30 16:46 ./LinuxStudy/1
-rw------- 1 root root 4.1K Apr 24 04:45 ./.bash_history
[root@xyc ~]#
2. -ok 选项
与 -exec选项作用基本一致;区别在于,”-exec“的命令2会直接执行,不会询问;”-ok“的命令2在执行前会询问是否执行
#例:
[root@xyc ~]# find . -size +1k -a -type f -ok ls -lh {} \;
< ls ... ./install.sh > ? y
-rw-r--r-- 1 root root 20K Mar 4 16:48 ./install.sh
< ls ... ./.cache/pip/http/b/b/8/7/6/bb876b2e6a22c2739002e9ef3388ae978b7a6192a19fe67d8b0030f2 > ? y
-rw------- 1 root root 24K Mar 21 15:25 ./.cache/pip/http/b/b/8/7/6/bb876b2e6a22c2739002e9ef3388ae978b7a6192a19fe67d8b0030f2
< ls ... ./.viminfo > ? y
-rw------- 1 root root 1.2K Apr 24 00:54 ./.viminfo
< ls ... ./LinuxStudy/1 > ? y
-rwxr-xr-x 1 user1 root 8.4K Jan 30 16:46 ./LinuxStudy/1
< ls ... ./.bash_history > ? y
-rw------- 1 root root 4.1K Apr 24 04:45 ./.bash_history
2.5.5、grep
- 命令名称:grep
- 英文原意:print lines matching a pattern
- 所在路径:Shell内置命令
- 执行权限:所有用户
- 功能描述:在文件中提取和匹配符合条件的字符串行。
[root@xyc LinuxStudy]# grep [选项] “搜索内容” ,目标文件
选项:
-i : 忽略大小写
-n : 输出行号
-v : 反向查找
--color = auto : 搜索出的关键字用颜色显示
例:
[root@xyc LinuxStudy]# cat abc
xueyunchong
aaaaaaaaaa
111111111111111
[root@xyc LinuxStudy]# grep a abc
aaaaaaaaaa
abcdefghijklmn
find
和grep
的区别: