云计算【第一阶段(13)】Linux的Find命令

一、查找文件或目录Find

格式

find 查找的范围  类型    查找数据 

1.1、常用查找类型

查找类型 关键字 说明
按名称查找 -name 根据目标文件的名称进行查找,允许使用“*”及“?”通配符
按文件大小查找 -size 根据目标文件的大小进行查找,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括kB(注意k是小写)、MB、GB
按文件属主查找 -user 根据文件是否属于目标用户进行查找
按文件类型查找(常用类型) -type 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等

 1.2、-name参数案列

可以用通配符

find   /data/    -name   "*.txt"      #查找/data/目录以.txt结尾的文件;
find   /data/    -name   "[A-Z]*"     #查找/data/目录以大写字母开头的文件;
find   /data/    -name   "test*"      #查找/data/目录以test开头的文件;


1.3、-size参数案列

find   /data/    -size   +1M              #查文件大小,大于1Mb的文件;
find   /data/    -size   1M               #查文件大小,为1M的文件;
find   /data/    -size   -1M              #查文件大小,小于1Mb的文件;

扩展

dd: 是一个用于复制和转换文件命令

  • if=/dev/zero: 指定输入文件(input file)为 /dev/zero。/dev/zero 是一个特殊的设备文件,它只生成空字符(null bytes,即值为 0 的字节)。
  • of=ceshi.txt: 指定输出文件(output file)为 ceshi.txt。这意味着 dd 命令将把从 /dev/zero 读取的数据写入到 ceshi.txt 文件中
  • count=1: 表示只复制 1 个块(block)的数据。
  • bs=10M: 设置块大小(block size)为 10 兆字节(Megabytes)

这种操作通常用于快速生成一个指定大小的文件,尤其是当你需要一个大文件来进行某种测试或填充磁盘空间时。

1.4、-user参数案列

find /home -user 用户名
find /home -user 用户名  -group 组名

1.5、 -type参数教案

文件类型包括:普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)链接文件(l)等

find /boot -type d
find   /data/    -type d    #查找/data/目录下的文件夹;
find   /data/    !   -type   d     #查找/data/目录下的非文件夹;
find   /data/    -type  l    #查找/data/目录下的链接文件。
find  /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;
find  /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;

扩展1

  1. 块设备文件(b)是指硬盘、固态硬盘等存储设备
  2. 字符设备文件(c)是指在I/O传输过程中以字符为单位进行传输的设备文件,如键盘、鼠标、串口和打印机等允许用户以字节为单位与其进行交互的设备。

    字符设备的一个主要特点是它们不具备缓冲区,并且通常不支持随机存取。这意味着对这种设备的读写是实时的,并且数据是按照字符流的方式被有序访问的

扩展2

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数

简单的说就是传递数据的,chomd不是管道命令,不能从标准输入设备上读取数据,但是加上xargs就可以了。

find ./ -maxdepth 1 -type f -print0 | xargs -0 ls -lh

1.5.1、情况问题

如果目录恰巧也是.log命名,如果查询到并且删除就出现问题了

在查询的时候需要加入-type f作为一个限制

 

1.6、多条件查找

  • -a    并且
  • -o    或者
  • -!   取反

-a表示两个条件必须同时满足, -o表示只需满足其中任何一个条件即可

a高于o

[root@localhost ~]# find /mnt -user root -a -size +5m

[root@localhost ~]# find /mnt -user root -o -size +5m

1.7、空文件

-empty

1.8、时间戳

  • atime (访问时间):
    • 最后一次读取文件内容的时间。
    • 注意:仅当读取文件内容时才更新,读取文件的元数据(如使用ls命令)通常不会更新atime。
    • 一些文件系统或挂载选项可能会禁用atime的更新,以减少磁盘I/O操作(例如,使用noatimerelatime挂载选项)。
  • mtime (修改时间):
    • 最后一次修改文件内容的时间。
    • 当文件内容被修改时,mtime会被更新。
    • 这是最常见的用于追踪文件内容变化的时间戳。
  • ctime (状态改变时间):
    • 最后一次更改文件状态(inode信息)的时间。
    • 这不仅包括文件内容的更改,还包括文件权限、所有权等元数据的更改。
    • 即使文件内容没有改变,只要文件的元数据(如权限、所有权)发生变化,ctime也会被更新。
  • -min:
    • 这不是一个独立的时间戳,而是一个常用的参数选项,通常与find命令结合使用,用于指定时间范围。
    • 例如,find /path/to/search -mtime -5会找到在过去5分钟内修改过的文件。
    • -min通常与-atime-mtime-ctime一起使用,指定时间范围以分钟为单位。

1.9、处理动作 

按权限查找:-perm
[root@localhost ~]# find /bin/ -perm 755 # 等于 0755 权限的文件或目录
[root@localhost  ~]# find /bin/ -perm -644 #-perm -644 至少有 644 权限的文件或目录

在当前目录下(包含子目录),删除所有txt文件 
find ./ -name "*.txt" -exec rm {} \; 

在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 
find ./ -name "*.txt" -exec grep "bin" {} \; 


 

1.10、生产案列

(注意:{} \中间有空格)

find /backup/ -type f -name "*.log" -exec rm {} \;  #删除备份文件
find /backup/ -type f -name "*.dmp" -exec rm {} \;
#删除日志文件
find /backup/ -type f -name "*.tar.gz" -mtime +5 -exec rm -rf {} \; #删除5天前的备份


 

 

相关推荐

  1. Linux-find命令

    2024-06-14 13:46:04       20 阅读
  2. 计算第1阶段_Linxu基础知识_day02

    2024-06-14 13:46:04       20 阅读
  3. Linux 系统 find 命令详解

    2024-06-14 13:46:04       38 阅读

最近更新

  1. 稀疏之美:在Mojo模型中实现特征的稀疏表示

    2024-06-14 13:46:04       1 阅读
  2. AI开发者的编程语言Mojo:入门指南

    2024-06-14 13:46:04       1 阅读
  3. 跨语言的智能:在多种编程环境中部署Mojo模型

    2024-06-14 13:46:04       1 阅读
  4. Mojo编程语言详细介绍

    2024-06-14 13:46:04       1 阅读
  5. 掌握MOJO命令行:参数解析的艺术

    2024-06-14 13:46:04       1 阅读
  6. 运营商二三要素是什么?有什么意义

    2024-06-14 13:46:04       1 阅读
  7. 3102. 最小化曼哈顿距离

    2024-06-14 13:46:04       1 阅读
  8. PHP String manipulation: A comprehensive guide

    2024-06-14 13:46:04       1 阅读

热门阅读

  1. HTML 区块

    2024-06-14 13:46:04       7 阅读
  2. 网络安全和信息安全

    2024-06-14 13:46:04       7 阅读
  3. 医药数字化转型-数据分析与集团数据管控

    2024-06-14 13:46:04       8 阅读
  4. Vue前端连接与部署:深入探索与实践

    2024-06-14 13:46:04       7 阅读
  5. js时间戳转换为日期

    2024-06-14 13:46:04       7 阅读
  6. acast,跨平台的asciinema终端录屏工具

    2024-06-14 13:46:04       6 阅读
  7. 【ubuntu】用户添加root权限

    2024-06-14 13:46:04       8 阅读
  8. 大模型 API和私有化部署的区别与联系

    2024-06-14 13:46:04       9 阅读
  9. Oracle数据库中调整redo log(重做日志)的大小

    2024-06-14 13:46:04       7 阅读
  10. Python Flask

    2024-06-14 13:46:04       9 阅读