zoukankan      html  css  js  c++  java
  • 【Linux常见命令】find命令

    find - search for files in a directory hierarchy

    find命令用来在指定目录下查找文件。

    任何位于参数之前的字符串都将被视为欲查找的目录名。

    如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

    语法:
      find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

    参数:

    • -type 文件类型:
      • 文件f(file),
      • 目录d(directory),
      • 字符串c(character),
      • 块b(block),
      • s(socket),
      • l(link)符号链接
    • -name 按名字查找 后接“文件名”,支持正则表达式和通配符
    • -mtime 按照文件的mtime修改时间查找文件(modify),文件内容被修改的最后时间
    • -atime 访问时间(access),文件中的数据库最后被访问的时间
    • -ctime 变化时间(change),文件内容被修改的最后时间
    •  ! 取反
      • find . -type f ! -name 'file.txt' 不是名字叫file.txt的所有文件
    • -perm 644,755 权限查找
    • -size n 文件大小
      • find . -size +10k 大于10k的文件
      • 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
    • -exec   执行命令
      • find /data -type f -name 'a.txt' -exec rm {} ; 
      • 在指定目录/data下面查找类型为文件file,名称为a.txt的文件,将find找到的内容给到{}中,执行删除命令。

    示例:

    删除找到的文件

    [root@oldboy data]# echo test >a.txt
    [root@oldboy data]# ls
    a.txt  oldboy.txt
    [root@oldboy data]# find /data -type f -name 'a.txt' -exec rm {} ;   
    [root@oldboy data]# ls
    oldboy.txt
    [root@oldboy data]# find /data -type f -name 'oldboy.txt' -exec rm {} ;
    [root@oldboy data]# ls

    批量创建1-10的.txt文件,通过查找命令将找到的所有.txt文件通过管道符交给xargs命令,将所有文件放在一行,再由rm -f强制删除。

    [root@oldboy data]# touch {1..10}.txt
    [root@oldboy data]# ls
    10.txt  2.txt  4.txt  6.txt  8.txt
    1.txt   3.txt  5.txt  7.txt  9.txt
    [root@oldboy data]# find /data -type f -name '*.txt' |xargs
    /data/2.txt /data/5.txt /data/3.txt /data/9.txt /data/7.txt 
    /data/1.txt /data/4.txt /data/10.txt /data/8.txt /data/6.txt
    [root@oldboy data]# find /data -type f -name '*.txt' |xargs rm -f
    [root@oldboy data]# ls

    在脚本中删除文件或目录时,**生产环境**的使用方法一般为:

    • 和xargs搭配用法
      • 删除在/logs目录下,修改时间在15天以前的'.log'文件
        • find /logs -type f -name '*.log' -mtime +15 |xargs rm -f
      • 删除在/logs目录下,以oldboy结尾的修改时间再30天以前的目录
        • find /logs-type d -name '*oldboy' -mtime +30 |xargs rm -rf
    • 使用find的-exec
      • 在/logs目录中查找更改时间在5日以前的文件并删除它们
        • find /logs -type f -name '*.log' -mtime +5 -exec rm {} ;

    • -mtime 按修改时间查找modify time
      • +7 代表7天以前[很久以前,截止到7天以前)
      • 7 代表最近的第7天当天
      • -7 代表最近7天(7天,今天now)

    重要提示:find命令是生产环境中极重要的一个命令,要精通才好

  • 相关阅读:
    二叉树后序遍历
    二叉树中序遍历
    二叉树的前序遍历
    字符串转整数
    DVWA靶场——File Inclusion(文件包含)
    DVWA-CSRF
    DVWA--COMMAND INJECTION
    DVWA练习一 暴力破解
    pikachu--SSRF
    pikachu---XXE
  • 原文地址:https://www.cnblogs.com/zoe233/p/11815624.html
Copyright © 2011-2022 走看看