Linux的Find下令

打印 上一主题 下一主题

主题 874|帖子 874|积分 2626

目录
一、查找文件或目录Find
1.1、常用查找范例
 1.2、-name参数案列
​编辑
​编辑
1.3、-size参数案列
1.4、-user参数案列
1.5、 -type参数教案
1.5.1、情况题目
1.6、多条件查找
1.7、空文件
1.8、时间戳
1.9、处理动作 
1.10、生产案列

一、查找文件或目录Find

格式
   find 查找的范围  范例    查找数据 
  1.1、常用查找范例

查找范例关键字阐明按名称查找-name根据目的文件的名称举行查找,允许使用“*”及“?”通配符按文件巨细查找-size根据目的文件的巨细举行查找,一样平常使用“+”、“-”号设置超过或小于指定的巨细作为查找条件常用的容量单元包括kB(留意k是小写)、MB、GB按文件属主查找-user根据文件是否属于目的用户举行查找按文件范例查找(常用范例)-type文件范例包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等  1.2、-name参数案列

可以用通配符
  1. find   /data/    -name   "*.txt"      #查找/data/目录以.txt结尾的文件;
  2. find   /data/    -name   "[A-Z]*"     #查找/data/目录以大写字母开头的文件;
  3. find   /data/    -name   "test*"      #查找/data/目录以test开头的文件;
复制代码





1.3、-size参数案列


  1. find   /data/    -size   +1M              #查文件大小,大于1Mb的文件;
  2. find   /data/    -size   1M               #查文件大小,为1M的文件;
  3. 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参数案列

  1. find /home -user 用户名
  2. find /home -user 用户名  -group 组名
复制代码


1.5、 -type参数教案

文件范例包括:普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)链接文件(l)等
  1. find /boot -type d
  2. find   /data/    -type d    #查找/data/目录下的文件夹;
  3. find   /data/    !   -type   d     #查找/data/目录下的非文件夹;
  4. find   /data/    -type  l    #查找/data/目录下的链接文件。
  5. find  /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;
  6. find  /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;
复制代码
扩展1

  • 块设备文件(b)是指硬盘、固态硬盘等存储设备
  • 字符设备文件(c)是指在I/O传输过程中以字符为单元举行传输的设备文件,如键盘、鼠标、串口和打印机等允许用户以字节为单元与其举行交互的设备。
    字符设备的一个主要特点是它们不具备缓冲区,并且通常不支持随机存取。这意味着对这种设备的读写是实时的,并且数据是按照字符流的方式被有序访问的
扩展2
xargs下令是给其他下令传递参数的一个过滤器,也是组合多个下令的一个工具。它善于将标准输入数据转换成下令行参数
简单的说就是传递数据的,chmod不是管道下令,不能从标准输入设备上读取数据,但是加上xargs就可以了。
   find ./ -maxdepth 1 -type f -print0 | xargs -0 ls -lh
  

  • find ./ -maxdepth 1 -type f -print0

    • find:是Linux和Unix系统中用于搜索文件的下令。
    • ./:指定从当前目录开始搜索。
    • -maxdepth 1:限制搜索深度为1,即只搜索当前目录,不进入任何子目录。
    • -type f:指定只查找文件,不包括目录。
    • -print0:以\0(null字符)作为文件名之间的分隔符,而不是换行符或空格。这对于处理包含空格、换行符、引号等特殊字符的文件名非常有用。

  • | xargs -0 ls -lh

    • |:管道符,用于将一个下令的输出作为另一个下令的输入。
    • xargs:从标准输入构建并执行下令的工具。
    • -0:告诉xargs盼望输入项由\0(null字符)分隔,这与find下令的-print0选项相匹配。
    • ls -lh:ls是列出目录内容的下令,-l选项表示以长格式列出信息(包括文件权限、所有者、巨细等),-h选项表示以人类可读的格式表现文件巨细(如KB、MB)。

这条下令的作用是在当前目录下查找所有直接子文件,并以人类可读的格式列出它们的具体信息。使用-print0和-0选项是为了确保纵然文件名中包含特殊字符(如空格、换行符等),下令也能正确处理这些文件名。


1.5.1、情况题目

假如目录碰巧也是.log命名,假如查询到并且删除就出现题目了
在查询的时候必要加入-type f作为一个限制

 



1.6、多条件查找



  • -a    并且
  • -o    大概
  • -!   取反
-a表示两个条件必须同时满足, -o表示只需满足其中任何一个条件即可
a高于o
  1. [root@localhost ~]# find /mnt -user root -a -size +5m
  2. [root@localhost ~]# find /mnt -user root -o -size +5m
复制代码
1.7、空文件

-empty
1.8、时间戳



  • atime (访问时间):

    • 最后一次读取文件内容的时间。
    • 留意:仅当读取文件内容时才更新,读取文件的元数据(如使用ls下令)通常不会更新atime。
    • 一些文件系统或挂载选项可能会禁用atime的更新,以减少磁盘I/O操作(比方,使用noatime或relatime挂载选项)。

  • 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 权限的文件或目录
  1. 在当前目录下(包含子目录),删除所有txt文件
  2. find ./ -name "*.txt" -exec rm {} \;
  3. 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行
  4. find ./ -name "*.txt" -exec grep "bin" {} \;
复制代码

1.10、生产案列

(留意:{} \中间有空格)
  1. find /backup/ -type f -name "*.log" -exec rm {} \;  #删除备份文件
  2. find /backup/ -type f -name "*.dmp" -exec rm {} \;
  3. #删除日志文件
  4. find /backup/ -type f -name "*.tar.gz" -mtime +5 -exec rm -rf {} \; #删除5天前的备份
复制代码

 



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表