系列文章目录
第一章 [Linux之查看文件命令cat、nl、head、tail、sed、more、less]
第二章 [Linux之查找文件命令locate、find、which、whereis]
目录
系统:centos7
前言
本节文章主要介绍了一些查找命令的基本使用,其中locate、find可以用来查找文件,which和whereis则用来查找命令
一、locate
用于查找文件或目录,查找目录会把目录下的文件一并显示
默认模糊查找,只要文件里有要查找的元素就会显示
需要下载mlocate软件包
yum install mlocate -y
会根据文件名到mlocate.db索引文件里去查找
缺点:locate不会自动更新索引,所以新建的文件需要先执行updatedb命令才能找到
出现 “locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录” 时,
使用 updatedb 命令,会创建mlocate.db文件,原理是将整个Linux系统的文件或文件夹创建了一个索引,存放在mlocate.db文件里
二、find
用于查找文件或目录,默认精确查找,模糊查找自行加通配符
find [查找范围] [查找条件] [动作]
例:
find / -name "*.py" # 在根目录下查找以.py结尾的文件
find /mybin ! -name "*.py" # 在/mybin目录下查找不以.py结尾的文件
选项条件可以组合,两个选项中间可以增加逻辑选项:-o:逻辑或,-a:逻辑与(默认),-not:逻辑非(在命令中可用"!"表示)
例::在根目录下查找以.py结尾或者文件大小大于1M的文件
find / -name "*.py" -o -size +1M
默认与的优先级高于或
用()来改变优先级,不过要用 \ 转义,注意命令与()之间要有空格
例:查找当前目录下必须以.py结尾,然后类型为普通文件或者大小小于10k的文件(夹)
find . -name "*.py" \( -type f -o -size -10k \)
在shell编程里,()会创建一个子进程去执行命令,所以要转义
-exec动作
执行的动作,动作一般都是命令
例:将/lianxi下的hello.c文件复制到/lianxi/sc目录下,这里的cp采用绝对路径,覆盖文件不会提醒
find /lianxi -name hello.c -type f -exec cp {} /lianxi/sc \;
cp {}(源文件) /lianxi/sc(目的地)
{}:相当于一个容器,里面存放的是前面find命令查找到的内容
\; 是-exec执行动作的结束符号,否则不知道是否输入完成
这里的 \ 是转义字符,让;转换到原始的含义
查找条件:
-name:按文件名查找
-iname:按文件名查找,不区分大小写,insensitive 不敏感的
-size:按文件大小查找,+为大于(推荐),-为小于(尽量用+配合!写),单位:T,G,M,k(小写);例:-size 1M:查找差不多1M的文件
-type:按文件类型查找:f、d、l、b、c、p、s
-mtime:按文件更改时间查找:单位天;2,前2天那天;+2,2天前;-2,2天内,以当前时间来比
-mmin:按文件更改时间查找,单位分钟
-user:按文件属主查找
-perm:按文件权限查找
-newer:按比某个文件更新的查找,查找小于xx文件mtime的其他文件
-maxdepth:查找深度,当前目录为第1层,需要放到条件最前面,默认不限制深度
三.which
用于查找命令所在位置,从PATH中的路径进行查找,从前往后查找,找到就结束,没找到会提醒
[root@localhost lianxi]# which mkdir
/usr/bin/mkdir
四.whereis
查看命令存放路径和man手册的路径
[root@localhost lianxi]# whereis tcpdump
tcpdump: /usr/sbin/tcpdump /usr/share/man/man8/tcpdump.8.gz
总结
以上就是今天要讲的内容,本文仅仅简单介绍了locate、find的使用,这两个命令可以让我们快速的找到我们想要的文件,find命令的用法还有很多,可以通过man(命令)或者查看其他创作者的文章,感谢观看,不足之处随时欢迎指出。