zoukankan      html  css  js  c++  java
  • find命令

    find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应的操作。
     

    find命令的格式

    1、 find命令的一般形式为:find pathname -options [-print -exec -ok ...]

    2、 find命令的参数;
    -athname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录,递归查找。
    -print:     find命令将匹配的文件输出到标准输出。
    -exec:    find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} ;,注意{}内部无空格,和;之间含有一个空格分隔符。
    -ok:       和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

     

    根据文件名搜索

    -name:使用文件名匹配符合条件的文件。   -iname:使用文件名匹配符合条件的文件(忽略大小写)。

    [root@vmax0105 test_shell]# find /tmp/ -name "*.txt"
    /tmp/test_shell/a.txt

    find也可以用!排除匹配到的模式

    [root@vmax0105 test_shell]# find /tmp/test_shell/ ! -name "*.txt"
    /tmp/test_shell/
    /tmp/test_shell/config.xml
    /tmp/test_shell/test.sh
    find命令支持逻辑操作符。-a和-and选项可以执行逻辑与(AND)操作,-o和-or选项可以执行逻辑或(OR)操作。 

    [root@vmax0105 test_shell]# find /tmp/ ( -name "*.txt" -o -name "*.xml" ) -print
    /tmp/test_shell/config.xml
    /tmp/test_shell/file.txt

    备注:  (  ) 这对符号里的内容被视为一个整体。
     
     
    -regex:使用正则表达式匹配符合条件的文件。   -iregex:使用正则表达式匹配符合条件的文件(忽略大小写)。
     
     

    根据文件类型搜索

    find支持的文件类型

     
    只列出所有的目录(包括子目录)
    [root@vmax0105 test_shell]# find . -type d -print
    .
    ./dir2
    ./dir1

    只列出所有文件(包括子目录中的文件)

    [root@vmax0105 test_shell]# find . -type f -print
    ./config.xml
    ./file.txt
    ./dir2/dir2.txt
    ./dir1/dir1.txt
    ./test.sh
     

    根据文件的时间戳进行搜索

     Unix/Linux文件系统中的每一个文件都有3种时间戳
    • 访问时间(-atime):用户最近一次访问文件的时间。 
    • 修改时间(-mtime):文件内容最后一次被修改的时间。 
    • 变化时间(-ctime):文件元数据(例如权限或所有权)最后一次改变的时间。
    -atime、-mtime和-ctime可作为find的时间选项。它们可以用整数值来指定天数。这些数字前面可以加上-或+。-表示小于,+表示大于。 
     

    打印出在最近7天内被访问过的所有文件:find . -type f -atime -7 -print
    打印出恰好在7天前被访问过的所有文件:find . -type f -atime 7 -print
    打印出访问时间超过7天的所有文件:find . -type f -atime +7 -print

     

    -atime、-mtime以及-ctime都是以“天”为单位来计时的。find命令还支持以“分钟”为计时单位的选项。这些选项包括:

    • -amin(访问时间)
    • -mmin(修改时间)
    • -cmin(变化时间)

    找出比file.txt修改时间更近的所有文件:find . -type f -newer file.txt -print


    find命令的时间戳处理选项有助于编写系统备份和维护脚本。



    根据文件大小进行搜索

     文件大小单位
    • b:块(512字节)
    • c:字节
    • w:字(2字节)
    • k:千字节(1024字节)
    • M:兆字节(1024K字节)
    • G:吉字节(1024M字节)

    查找大于2KB的文件:find . -type f -size +2k
    查找小于2KB的文件:find . -type f -size -2k
    查找大小等于2KB的文件:find . -type f -size 2k

    根据文件权限和所有权进行搜索

    -perm选项:搜索特定权限值的文件。
    列出具有特定权限的文件:find . -type f -perm 644 -print

    -user 按照文件属主来查找文件。-group 按照文件所属的组来查找文件。
    find . -type f -user root -print

     

    利用find执行相应操作 

    1、删除匹配的文件
    从当前目录中删除.txt文件:find . -name "*.txt" -delete
     
    2、使用exec或ok来执行shell命令
    查找文件并显示文件属性:find . -type f -exec ls -l {} ;
    查找文件并显示文件行数:find . -type f -exec wc -l {} ;
    查找文件并匹配文件内容:find . -type f -exec grep "sh" {} ;
     
     
  • 相关阅读:
    Domain Space
    Class WriteGroupAttribute
    HelloCube:IJobForEach
    HelloCube:ForEach
    组件
    世界
    DOTS默认情况下的性能
    ECS适合你吗?
    DOTS原则和愿景
    Packages window(包窗口)
  • 原文地址:https://www.cnblogs.com/lfjn/p/11387639.html
Copyright © 2011-2022 走看看