Linux常用查找文件方法

一、which命令

查找类型:二进制文件;
检索范围:PATH环境变量里面指定的路径中查找;
描述:快速返回某个指定命令的位置信息。
优点:查找速度快
缺点:仅支持二进制文件
例:
在这里插入图片描述

二、whereis命令

查找类型:二进制文件,man帮助文件,及源代码文件;
检索范围:/usr目录
描述: 快速返回某个指定命令的位置信息,及其man文件和源代码文件的位置信息(如果存在的话)。

也可以通过参数指定返回某一类查找结果:
-b: 仅查找二进制文件;
-m: 仅查找man帮助文件;
-s: 仅查找源代码文件;
优点:查找速度快
缺点:查找文件类型及范围均有限
例:
在这里插入图片描述

三、locate命令

查找类型:所有文件;
检索范围:locatedb数据库;
描述:locate是Linux系统提供的一种快速检索全局文件的系统命令,它并不是真的去检索所以系统目录,而是检索一个数据库文件locatedb(Ubuntu系置/var/cache/locate/locatedb),该数据库文件包含了系统所有文件的路径索引信息,所以查找速度很快。
Linux系统动创建这个数据库,并且每天动更新次,所以对于新变动的文件(如新安装或新拷贝)使locate命令是查不到的。为了避免这种情况,可以在使locate命令之前,先执行一下"sudo updatedb"命令来手动更新数据库。
优点:查找速度快,且支持所有文件类型
缺点:不支持新变动的文件检索,需要手动更新数据库(执行 updatedb 命令 )
例:
在这里插入图片描述

四、find命令

查找类型:所有文件;
检索范围:指定路径;
描述:find命令是Linux最强大的查找命令,参数多,用法丰富。
基本用法: find <检索路径> <选项> <搜索内容>
优点:功能强大,且支持组合命令;
缺点:如果指定的检索路径层级复杂,则检索速度较慢

下面是几种用法实例:
1.基础打印操作

find命令默认接的命令是-print,它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔,这样就不会分行了。但是一定要注意,-print0针对的是\n转\0,如果查找的文件名本身就含有空格,则find后-print0仍然会显示空格文件。所以-print0实现的是\n转\0的标记,可以使用其他工具将\0标记替换掉,如xargs,tr等。
注意:如果find命令后没有加命令,那么find查找当前所在的目录进行查找。

在这里插入图片描述

2.指定完整的文件名称,也可以使用通配符(正则)进行模糊查找。
默认情况下,该find命令搜索常规文件,但最好指定它以使所有内容更清晰:

常用的两个是-name和-path。
-name可以对文件的basename进行匹配,
-path可以对文件的dirname+basename。查找的文件名最好使用引号包围,可以配合通配符进行查找。

find *.pdf    #搜索范围 当前目录(不递归)
find -name "*.pdf"  #当前面有参数-name时,后边一定带“ ”。
                    #搜索范围:对当前目录下所有目录递归搜索


在这里插入图片描述
注意:但不能在-name的模式中使用”/“,除非文件名中包含了字符”/“,否则将匹配不到任何东西,因为-name只对basename(基础文件名)进行匹配。

3.根据目录深度搜索

#-maxdepth 和 -mindepth选项可以限制find命令遍历的目录深度
find -maxdepth 2 -mindepth 1 -name "*.pdf"

4.指定文件类型进行查找:
-type d: 查找目录;
-type f: 查找普通文件;
-type l: 查找软链接文件;

一般需要搜索的文件类型就只有普通文件(f),目录(d),链接文件(l)

在这里插入图片描述
5.按特定时间戳查找文件
类unix系统中每个文件都有三种时间戳

访问时间(-atime、-amin):用户最近一次访问文件的时间。

修改时间(-mtime、-mmin):文件最后一次被修改的时间。

元数据更改时间(-ctime、-cmin) :文件权限、所有权等最后一次被修改的时间。

time结尾的选项,其单位为天,min结尾的选项其单位为分钟,这些选项的值都为一个正负整数, 如+7,表示,7天以前被访问过的文件,-7表示7天以内被访问过的文件,7表示恰好7天前被访问的文件。

#要搜索atime一年多以前的文件,我们可以编写如下命令:
find . -type f -atime +365

#如果我们需要查找mtime恰好是5天前的文件,请不要包含+,因为它的意思是“大于”。
find . -type f -mtime 5

#显然,+“大于” -“小于”。所以我们可以搜索ctime5 到 10 天前的文件:
find . -type f -ctime +5 -ctime -10

6.按大小查找文件

#-size选项使我们能够按特定大小查找文件。我们可以将其度量单位指定为以下约定:

b: 512 字节(默认)
c: 字节
w: 两字节字
k: 千字节
M: 兆字节
G: 千兆字节

#类似于按时间戳查找文件,+意思是“大于”和-“小于”。例如,要查找大小在 10 MB 和 1 GB 之间的文件:

find . -type f -size +10M -size -1G

7.按权限或所有权查找文件

#-perm选项find可以帮助我们按特定权限搜索文件:
#如:搜索所有具有 777(读、写、执行)权限的文件
find . -type f -perm 777
# 打印用户www拥有的文件
find -type f -user www

8.找到文件并执行命令

find . -type f -atime +365 -exec rm -rf {} \;

#上面的-exec选项后面的命令是rm -rf,用于删除文件。{}是查找结果的占位符。

#注意:占位符{}非常重要,尤其是在您想删除文件时。因为如果您不使用它,该命令将针对所有文件而不是您刚刚通过该find命令找到的文件执行。  
#     结尾 \; 也很重要  命令-exec必须以分号结束  "\"表示转义
  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值