Linux文件查找
时间:2023-3-10 20:16 作者:wen 分类: Linux
[TOC]
file命令
可以查看一个文件的文件类型
wenxk@esc:~$ file encrypt.c
encrypt.c: C source, UTF-8 Unicode text, with CRLF line terminators
which命令
显示命令路径的全路径, 可以查看命令文件所在的目录路径
wenxk@esc:~$ which sudo
/usr/bin/sudo
whereis命令
显示命令以及相关文件的路径
- -b 定位指定的命令的可执行文件
- -s 定位源码文件
- -m man帮助文件(文档)路径
wenxk@esc:~$ whereis sudo
sudo: /usr/bin/sudo /usr/lib/sudo /usr/share/man/man8/sudo.8.gz
locate命令
快速的定位文件的路径, Linux系统中mlocate.db保存文件名以及对应的路径信息, 查询的是数据库, 不是递归遍历磁盘目录, 能够快速的得出结果
-
sudo yum -y install mlocate
-
updatedb
更新库
参数:
- -c 不显示内容只显示行数
- -i 匹配的时候忽略大小写
- -r 支持正则
特效: 非实时搜索
- 依赖是程序事先构建的索引
- 在文件系统上查找符合条件的文件
- /var/lib/mlocate/mlocate.db
- updatedb命令更新数据库索引
- 搜索速度快, 但是如果文件经常发送变化, 就不适用了。
- 搜索出来的文件以绝对路径显示
- 默认基于模式查询
格式: locate [参数] 内容
wenxk@wenxk:~$ locate /etc/passwd
/etc/passwd
/etc/passwd-
find命令
查找目录下的文件,同时
- 可以调用其他的命令执行相应的操作
- 还可以结合通配符等一些使用
- shell中有三剑客 结合使用
- 通过管道符一起使用
- 等
参数:
- -name 安照指定的文件名进行查找文件, 这里高级用法结合通配符* ? []等特殊字符
- -type 指定文件类型
- f 普通文件
- d 目录
- l 连接文件
- s 套接字文件
- b 块设备文件
- c 字符设备文件
- p 管道文件
- -size 指定文件的大小查找
- 指定文件的长度
- M MB
- G GB
- c B
- k KB
- 指定文件的长度
- -empty 空文件
- -emtpy type -d 空目录
- -perm 安照文件的权限查找
- ! 反向查找
- -maxdepth 指定查找的程度 3
- -atime 按照指定的访问时间来查找, 单位是 天
- -ctime 安照指定的状态改变时间来查找, 单位是 天
- -mtime 安照指定的更改时间来查找, 单位是 天
- +n 表示文件更改时间距现在第n天以前
- -n 表示文件更改时间距现在第n天以内
- n 表示文件更改时间距现在第n天
- -inum 节点号
- -link 连接数
- -user 属主
- -uid 属主UID为xxx
- -nouser 没有属主
- -group 属主
- -gid 属组GID为xxx
- -nogroup 没有属组
特效: 实时搜索
- 通过指定的路径完成文件的查找
- 搜索的速度慢, 适合于查找非系统文件, 就是实时查找
- 设置搜索用户具备读取和执行权限的目录
- 默认是精确查询
进阶用法
条件运算符
- -a 逻辑与
- -o 逻辑或
- -not 逻辑非
- ! 取反
wenxk@esc:~$ find . ! -type d -a -name *.txt
./test/e.txt
./test/l.txt
./test/y.txt
./test/t.txt
./test/b.txt
./test/k.txt
./test/z.txt
./test/x.txt
./test/j.txt
./test/s.txt
./test/h.txt
./test/i.txt
./test/c.txt
./test/d.txt
./test/m.txt
./test/a.txt
./test/u.txt
./test/o.txt
./test/v.txt
./test/w.txt
./test/r.txt
./test/p.txt
./test/g.txt
./test/n.txt
./test/f.txt
./test/q.txt
案例
- 查找两天内被访问的文件, 当前目录下
find . -atime -2
- 查询5天内被修改的文件, 当前目录下
find . -mtime -5
- 查询5天内被修改的文件, 在var/log目录
find /var/log/ -mtime -5
- 查询5天内被修改的文件, 在var/log目录, 指定扩展名为*.log
find /var/log/ -mtime -5 -name '*.log'
- 查询5天内被修改的文件, 在var/log目录, 指定权限是644
find /var/log/ -mtime -5 -perm 644
- 查找当前目录下所有的子目录
find . -type d
- 查找当前目录下所有的子目录, 指定查找层数
find . -type d -maxdepth 3
- 查找当前目录下所有的文件
find . ! -type d
- 当前目录下查找大小200M以上的文件
find . -size +200M
- 当前目录下查找大小200M以上的文件, 并用长格式的方式显示
find . -size -200M -ls
标签: linux