在做运维相关的事情时,我们少不了要查这样那样的文件,一般来说我们可能会查比如带xxx.conf名字的文件在哪呢,查日志啊,某个可执行文件的位置啊。因此本篇我们主要讲解一下一些比较常用的命令。
1. 概览
which : 查看执行文件的位置。
whereis : 查看可执行文件位置和相关文件。
locate : 配合数据库缓存,快速查看文件的位置。
grep : 过滤匹配,他是一个文件搜索工具。
find : 可以根据条件查看文件。
2. 命令:which 查看执行文件的位置
说明:查看执行文件的位置
语法: which 参数 查询目标
常用命令:
一般不加参数使用
--all, -a 显示所有的匹配路径
操作:
3. 命令 whereis 查看可执行文件位置和相关文件
命令: whereis
语法: whereis 参数 查询目标
常用命令:
一般不加参数使用
-b 只搜索二进制文件
-B <目录> 定义二进制文件查找路径
-m 只搜索 man 手册
-M <目录> 定义 man 手册查找路径
-s 只搜索源代码
-S <目录> 定义源代码查找路径
操作:
4. 命令 locate 配合数据库缓存,快速查看文件的位置。
命令: locate
语法: locate 文件名
常用参数:
无
操作:
locate和find命令功能差不多,但是搜索效率更高,因为locate查的是数据库而find查找的 是目录文件。
数据库:
ls /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db
相关配置文件:
➜ ~ ls /etc/updatedb.conf
/etc/updatedb.conf
相关定时任务:
➜ ~ ls /etc/cron.daily/mlocate
/etc/cron.daily/mlocate
举例:
➜ ~ touch shafa
➜ ~ locate shafa
➜ ~ updatedb
➜ ~ locate shafa
/root/shafa
注:如果我们当天新建的文件查找,需要手动updatedb。
5. 命令 grep 过滤匹配,他是一个文件搜索工具
命令: grep
语法: grep 参数 目标值 文件
常用参数:
-v 取反
-i 忽略大小写
-n 输出的同时打印行号
^* 以*开头
*$ 以*结尾
^$ 空行
操作:
查 /etc/passwd有root的行
➜ ~ grep root /etc/passwd
root:x:0:0:root:/root:/bin/zsh
operator:x:11:0:operator:/root:/sbin/nologin
查 /etc/passwd 没有root的行(内容较多,禁展示几行)
➜ ~ grep -v root /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
查 /etc/passwd 有www的行并显示行号
➜ ~ grep -n www /etc/passwd
23:www:x:1000:1000::/home/www:/sbin/nologin
6. 命令 find 可以根据条件查看文件
命令: find
语法: find 路径 参数 输出
常用参数:
路径: 例如用 . 来表示当前目录,用 / 来表示系统根目录。
-print: 显示的时候”\n”做为定界符, 换行
-print0:与xargs配套使用,以“\0”做为定界符
find常用命令选项:
-name 按照文件名查找文件。“名称”
-iname 按照文件名查找文件。“名称”
-perm 按照文件权限来查找文件。666 777 等
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
-user 按照文件属主来查找文件
-atime -ctime (单位是天)
-mmin -cmin -amin(单位是分钟)
-size n [c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
-follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
查看当前目录下test.开头的文件,输出结果换行显示(默认)
➜ ~ find . -name "test*" -print
./test.txt
./autojump/tests
./test.1
查看当前目录下test.开头的文件,输出结果不换行显示
➜ ~ find . -name "test*" -print0
./test.txt./autojump/tests./test.1
对查找的内容执行相应命令
默认执行动作 : -print
常用动作:
-exec 这个参数后可以跟自定义shell命令
操作:
查询.txt结尾的文件并用ls查询其更多属性
➜test find . -name "*.txt" -exec ls -l {} \;
-rw-r--r-- 1 root root 0 11月 4 14:56 ./xq1.txt
-rw-r--r-- 1 root root 0 11月 4 14:56 ./xq.txt
-rw-r--r-- 1 root root 0 11月 4 14:56 ./xq2.txt
查询.txt结尾的文件并变成.bak结尾的文件
➜test find . -name "*.txt" -exec mv {} {}.bak \;
➜test ls
xq1.txt.bak xq2.txt.bak xq.txt.bak
逻辑查询:
-a 并且
-o 或者
+ 高于
- 低于
操作:
查看 .sh或者.q结尾的文件。
➜ test find . -name "*.sh" -o -name "*.q"
./book.q
./stop.sh
./start.sh
查看.sh结尾并且s开头的文件。
➜ test find . -name "*.sh" -a -name "s*"
./stop.sh
./start.sh
在文件中插入内容后查看。
➜test ll
总用量 12K
-rw-r--r-- 1 root root 9 11月 4 15:10 book.q
-rw-r--r-- 1 root root 13 11月 4 15:10 start.sh
-rw-r--r-- 1 root root 4 11月 4 15:10 stop.sh
-rw-r--r-- 1 root root 0 11月 4 14:56 xq1.txt.bak
-rw-r--r-- 1 root root 0 11月 4 14:56 xq2.txt.bak
-rw-r--r-- 1 root root 0 11月 4 14:56 xq.txt.bak
查看/etc 大于40k小于50k的文件
➜ test find /etc/ -size +40k -a -size -50k
/etc/selinux/targeted/active/modules/100/sysadm/hll
/etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
网友评论