11.3 which-whereis-locate-grep-find 查找命令
11.3.1 which-whereis-locate-grep find 查找命令
查找文件一般有以下几个命令:
which 查看可执行文件位置
whereis 查看可执行文件的位置及相关文件
locate 配合数据库缓存,快速查看文件位置
locate解释:
locate命令和 find -name 功能差不多,是它的另外一种写法,但是这个要比find搜索快的多,因为find命 令查找的是具体目录文件,而locate 它搜索的是一个数据库/var/lib/mlocate/mlocate.db,这个数据库中存有本地所有的文件信息,这个数据库是Linux自动创建并每天自动更新维护。相关的配置信息在/etc/updatedb.conf,查看定时任务信息在/etc/cron.daily/mlocate
注:需要提前执行 yum provides locate,查看需要安装哪些包
grep 过滤匹配,它是一个文件搜索工具
grep作用:过滤,它能够使用正则表达式来搜索文本,并把结果打印出来
参数:
-v 取反
-i 忽略大小写
^# 以#开头
#$ 以#结尾
^$ 空行
-n 对过滤的内容加上行号
| 或者的意思
find 查找相关文件
11.3.2 find 命令使用(必会,参数比较多)
格式:
find pathname -options [-print]
命令字 路径名称 选项 输出
参数:
pathname:find 命令所查找的目录路径,不输入代表当前目录例如用`.`来表示当前目录,用`/`来表示系统根目录。
find 命令选项:
-name 按照文件名查找文件。`名称`
-perm 按照文件权限查找文件。666 777 等
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-mtime -n / +n 按照文件的更改时间来查找文件
-n 表示文件更改时间间距现在 n 天以内
+n 表示文件更改时间间距现在 n 天以前
-type 查找某一类型的文件
b 块设备文件
d 目录
c 字符设备文件
p 管道文件
| 符号链接文件
f 普通文件
-size n 查找符合指定文件大小的文件
-exec 对匹配的文件执行该参数所给出的其他 Linux 命令,相应命令的形式为 命令 {} \;注意{}和 \ ;之间的空格,{}代表查到的内容
2.按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用 mtime,atime 或 ctime 选项
mtime:文件最后一次修改的时间
atime:最后一次访问时间
ctime:文件的最后一次变化时间, 也就是修改时间
例1:希望在root 目录下查找更改时间在1天以内,被黑客修改的文件
3.对查找内容执行相应命令
-exec 这个选项参数后面可以跟自定义的SHELL命令,格式如下:
查找一天内修改的文件:
例2:创建.back文件,进项查找并进行文件转移
命令:find . -name "*.back" -exec -mv {} /opt \;
例3:把查找到的文件复制到一个指定的目录
命令:find /root -name "*.txt" -exec cp {} /opt \;
例4:xargs 和 find 命令结合 复制文件 -i 表示 find 传递给 xargs 的结果 由{}来代替(了解)
命令:find . -name "*.back" | xargs -i cp {} /opt
例6:查找多个类型文件
-a and 并且
-o or 或者
+ 超过
- 低于
命令:
find . -name "*.sh" -o -name "*.pdf"
find /etc -size +20k -a -size -50k | wc -l
find /etc -size +20k | wc -l
例7:按权限查找:-perm
例8:查找的目录深度:
-maxdepth 1 # 只查找目录第一层的文件和目录
如:查找/bin 目录下权限等于 755 的可执行的文件
命令:find /bin/ -maxdepth 1 -perm 755
例9:查找系统中所有属于用户 mk 的文件,并把这个文件,放到/root/findresults 目录下
注意:/root/findresults 需要提前创建好
cp:无法以目录'/home/mk' 来覆盖非目录'/root/findresults/mk'
互动:同一个目录下,可以创建文件mk和文件夹mk吗?同一个目录下创建的文件名和目录名一样吗?