Linux之文件查找

常用查找文件命令

which命令可用于查找命令位置。
whereis可查找命令的位置,手册,源文件等。
which和whereis都不能查找内置命令位置。
locate优点:查找速度块;缺点:模糊匹配,匹配路径,实时性差。
find优点:准确查找,功能丰富;缺点:速度较慢

使用grep以文件内容为导向查找
grep “xxx” * -nR

which
which 在PATH变量指定的路径中,搜索某个系统命令的位置。
示例:查看ls命令所在的位置。

	$ Which -a ls 
	/bin/ls

whereis
whereis命令用于搜索程序的二进制文件,源代码文件或帮助文档。
示例:查看命令ls的全部信息。

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

示例:查看ls的帮助手册

$ whereis -m ls
ls: /usr/share/man/man1/ls.1.gz

示例:只查找ls的二进制文件

$ whereis -b ls 
ls: /bin/ls

type
type命令用于查看命令类型:
alias: 别名
keyword: 关键字
builtin: 内置命令
file: 外部命令

-t 输出类型名
-P 如果是外部命令,显示其所在路径
-a 对于外部命令,显示命令路径,命令类型信息

$ type ls
ls 是 `ls --color=auto' 的别名
$ type cd 
cd 是 shell 内建
$ type find
find 是 /usr/bin/find
$ type function
function 是 shell 关键字
$ type -a which
which 是 /usr/bin/which
which 是 /bin/which

locate
locate用于快速查找任何文件,它从一个系统数据库进行文件查找,而不需要遍历磁盘,因此速度快。
-e 仅查找存在的文件
-q 安静模式,不会显示任何错误讯息
-n 至多显示 n个输出
-r 使用正规运算式
-i 查找忽略大小写
-c 打印匹配结果数量

快速查找文件

$ locate rk3399.dtsi
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/.rk3399.dtsi.swo
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/.rk3399.dtsi.swp
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi

查找存在的文件
删除上面查找到的rk3399.dtsi.swo文件。

$ rm /home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/.rk3399.dtsi.swo

虽然rk3399.dtsi.swo,已经删除了,但仍然能查询到

 $ locate rk3399.dtsi
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/.rk3399.dtsi.swo
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/.rk3399.dtsi.swp
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi

使用-e 忽略已经不存在的文件

$ locate -e rk3399.dtsi
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/.rk3399.dtsi.swp
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi

查找计算文件的数量

$ locate -e -c rk3399.dtsi
2

忽略大小写查找
注意此处使用的查找名称时RK3399.dtsi

$ locate -e -i RK3399.dtsi
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/.rk3399.dtsi.swp
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi

使用正则表达式
普通的查找时模糊匹配的,因此只要目标名称中包含搜索的名称,都会被搜索出来,但可以使用正则表达式来精确查找。

$ locate -r   /rk3399.dtsi
root@zhutao-virtual-machine:/home/zhutao# locate -r   /rk3399.dtsi
/home/forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi

find
find命令时linux下的强大的查找命令。与locate相比,需要遍历磁盘文件,因此查找速度慢,但它的实时性比locate好。find命令查找条件比locate丰富。

以名称为条件

$ find ./ -name rk3399.dtsi
./forlinx/OK3399/OK3399-desktop-release/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi

以权限为条件

$ find ./ -perm 777 | less
./forlinx/OK3399/OK3399-desktop-release/kernel/drivers/gpu/arm/mali400/ump/arch

以文件类型为条件:涉及参数-type

$ find ./ -type l
./forlinx/OK3399/OK3399-desktop-release/kernel/drivers/gpu/arm/mali400/ump/arch

主要类型有:
f 普通文件
d 目录
b 块设备文件
c 字符设备文件
l 符号链接
s 套接字
p 管道文件

以文件大小为条件:涉及参数-size

$ ./ -size 1k #查找当前目录下小于1k的文件
$ find ./ -size +100M #查找当前目录下大于100M的文件

常用单位:
k 千字节
M 兆字节
G 吉字节
c 字节
b 块,一般为512字节
w 字大小,两个字节

以归属为条件:涉及参数–user,-nouser,-group,-nogroup

$ find ./ -user root  #查找当前目录下root用户的文件
$ find ./ -nouser   #查找当前目录下root用户的被删除的文件

以时间为条件:涉及参数-mtime,-atime,-ctime,-newer,-anewer,-cnewer,-amin,-cmin

$ find ./ -mtime 3 #查找3天前更改过的文件
$ find ./ -mtime -3 #查找3天内更改过的文件
$ find ./ -mtime 0 #查找今天更改过的文件
$ find ./ -newer sort.txt #查找比sort.txt修改时间更新的文件
$ find ./ -anewer sort.txt #查找比sort.txt访问时间更新的文件
$ find ./ -amin  5 #查找5分钟之前访问过的文件

注:
atime 最后访问时间
mtime最后修改时间
ctime最后修改时间,包括了属性和权限

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值