«

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命令

显示命令以及相关文件的路径

wenxk@esc:~$ whereis sudo
sudo: /usr/bin/sudo /usr/lib/sudo /usr/share/man/man8/sudo.8.gz

locate命令

快速的定位文件的路径, Linux系统中mlocate.db保存文件名以及对应的路径信息, 查询的是数据库, 不是递归遍历磁盘目录, 能够快速的得出结果

  1. sudo yum -y install mlocate

  2. updatedb 更新库

参数:

特效: 非实时搜索

  1. 依赖是程序事先构建的索引
  2. 在文件系统上查找符合条件的文件
  3. /var/lib/mlocate/mlocate.db
  4. updatedb命令更新数据库索引
  5. 搜索速度快, 但是如果文件经常发送变化, 就不适用了。
  6. 搜索出来的文件以绝对路径显示
  7. 默认基于模式查询

格式: locate [参数] 内容

wenxk@wenxk:~$ locate /etc/passwd
/etc/passwd
/etc/passwd-

find命令

查找目录下的文件,同时

  1. 可以调用其他的命令执行相应的操作
  2. 还可以结合通配符等一些使用
  3. shell中有三剑客 结合使用
  4. 通过管道符一起使用

参数:

  1. -name 安照指定的文件名进行查找文件, 这里高级用法结合通配符* ? []等特殊字符
  2. -type 指定文件类型
    • f 普通文件
    • d 目录
    • l 连接文件
    • s 套接字文件
    • b 块设备文件
    • c 字符设备文件
    • p 管道文件
  3. -size 指定文件的大小查找
    • 指定文件的长度
      • M MB
      • G GB
      • c B
      • k KB
  4. -empty 空文件
  5. -emtpy type -d 空目录
  6. -perm 安照文件的权限查找
  7. ! 反向查找
  8. -maxdepth 指定查找的程度 3
  9. -atime 按照指定的访问时间来查找, 单位是 天
  10. -ctime 安照指定的状态改变时间来查找, 单位是 天
  11. -mtime 安照指定的更改时间来查找, 单位是 天
    • +n 表示文件更改时间距现在第n天以前
    • -n 表示文件更改时间距现在第n天以内
    • n 表示文件更改时间距现在第n天
  12. -inum 节点号
  13. -link 连接数
  14. -user 属主
  15. -uid 属主UID为xxx
  16. -nouser 没有属主
  17. -group 属主
  18. -gid 属组GID为xxx
  19. -nogroup 没有属组

特效: 实时搜索

  1. 通过指定的路径完成文件的查找
  2. 搜索的速度慢, 适合于查找非系统文件, 就是实时查找
  3. 设置搜索用户具备读取和执行权限的目录
  4. 默认是精确查询

进阶用法

条件运算符

  1. -a 逻辑与
  2. -o 逻辑或
  3. -not 逻辑非
  4. ! 取反
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

案例

  1. 查找两天内被访问的文件, 当前目录下
    • find . -atime -2
  2. 查询5天内被修改的文件, 当前目录下
    • find . -mtime -5
  3. 查询5天内被修改的文件, 在var/log目录
    • find /var/log/ -mtime -5
  4. 查询5天内被修改的文件, 在var/log目录, 指定扩展名为*.log
    • find /var/log/ -mtime -5 -name '*.log'
  5. 查询5天内被修改的文件, 在var/log目录, 指定权限是644
    • find /var/log/ -mtime -5 -perm 644
  6. 查找当前目录下所有的子目录
    • find . -type d
  7. 查找当前目录下所有的子目录, 指定查找层数
    • find . -type d -maxdepth 3
  8. 查找当前目录下所有的文件
    • find . ! -type d
  9. 当前目录下查找大小200M以上的文件
    • find . -size +200M
  10. 当前目录下查找大小200M以上的文件, 并用长格式的方式显示
    • find . -size -200M -ls

标签: linux