zoukankan      html  css  js  c++  java
  • find的用法(完整)

    一、根据文件或者正则表达式进行匹配

    1.列出当前目录(/.code)及子目录下所有文件和文件夹

        find . 

    2.在当前目录(/.code)下查找以.pdf结尾的文件名

    find .  -name "*.pdf"

    或者 find . -iname "*.pdf"(忽略大小写)

    3.查找当前目录(/code)及子目录下所有以 .txt和.pdf结尾的文件

    find . -name "*.txt" -o -name "*.pdf"

    4.匹配文件路径或者文件

    find . -path "*.txt"

    5.基于正则表达式匹配文件路径

     find . -regex ".*(.txt|.pdf)$"

    或者 find . -regex ".*(.txt|.pdf)$"(忽略大小写)

    二、否定参数

    1.找出当前目录(/code)下不是以.txt结尾的文件

     find . ! -name "*.txt"

    三、根据文件类型进行搜索

    find . -type 类型参数

    类型参数列表:

    1. f 普通文件

    2. l 符号链接

    3. d 目录

    4. c 字符设备

    5. b 块设备

    6. s 套接字

    7. p Fifo

     

    四、基于目录深度搜索

    1.向下最大深度限制为1

    find . -maxdepth 1 -type f

    2.搜索出深度距离当前目录至少2个子目录的所有文件

    find . -mindepth 2 -type f

     

    五、根据文件时间戳进行搜索

    UNIX/Linux文件系统每个文件都有三种时间戳

    find . -type f 时间戳

    ~ 访问时间(-atime/天,-amin/分钟)  :用户最近一次访问时间

    ~ 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间

    ~ 变化时间(-ctime/天,-cmin/分钟)   :文件数据元(例如权限等) 最后一次修改时间

    1.搜索最近N天内被访问的所有文件

    find . -type f -atime -N

    2.搜索恰好在N天前被访问过的所有文件

    find . -type f -atime N

    3.搜索超过N天内被访问过的所有文件

    find . -type f -atime +N

    4.搜索访问时间超过N分钟的所有文件

    find .type f - amin +N

    5找出比file.txt修改时间更长的所有文件

    find . -type f -newer file.txt

     六、根据文件大小进行匹配

    find . -type f -size 文件大小单元

    文件大小单元

    1. b——块(512字节)

    2. c——字节

    3. w——字(2字节)

    4. k——千字节

    5. M——兆字节

    6.G——吉字节

    搜索大于N KB的文件

    find . -type f -size +Nk

    搜索小于N KB的文件

    find . -type f -size -Nk 

    搜索等于N KB的文件

    find . -type f -szie Nk

    (我在/code 中创建的都是新的空文件 所以大小都是0 k)

    我试出了我/code下创建的/test目录的大小是8k

    七.删除匹配文件

    find . -type f -name "*.txt" -delete

     

    八、根据文件权限/所有权进行匹配

    1.当前目录下搜索出权限777的文件

    find . -type f -perm 777

    2.找出当前目录下不是644的php文件

    find . -type f -name "*.php" ! -perm 644

     

    3.找出当前目录用户root拥有的所有文件(用户任意都可以)

    find . -type f -user root

    (很明显可以看出/code目录下所有文件和目录 都是root root)

    4.找出当前木兰路用户组root拥有的所有文件(用户组任意都可以)

    find . -type f -group root

     九、借助 -exec 选项与其他命令结合使用

    1.找出当前目录下所有的root文件,并把所有权更改问ljn(一般用户)

    find . -type f user root -exec chown ljn {} ;

    {}用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名

     2.找出当前目录下所有的 .pdf文件并删除

    find . -name "*.txt" -ok rm {} ;

    -ok和-exec行为一样,不过它会给出提示,时候执行相应操作

    3.查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中

    find . -type f -name "*.txt" -exec cat {} ;> all.txt

     4.将N天前的.log文件移动到old目录中

    find . -type f -mtime +N -name "*.log" -exec cp {} old ;

    5.找出当前目录下所有的.txt文件并以File:"文件名的形式打印出来

    find . -type f -name "*.txt" -exec printf "File:" %s " {} ;

    6.因为单行命令中-exec参数中无法使用多个命令,以下方式可以实现在-exec后接受多条命令

    -exec ./text.sh {} ;

    十、搜索但跳出指定的目录

    1.查找当前目录下所有.txt文件,但跳过子目录sk

    find . -path "./sk" -prune -o -name "*.txt" -print

    十一、要列出所有长度问零的文件

    find . -empty

    安心下来做技术,笑是最大的福气
  • 相关阅读:
    hdu 1849 (尼姆博弈)
    Spring中Quartz的配置
    DevExpress后置代码中初始化SQL数据源的方法
    MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!
    javascript实现的可改变滚动方向的无缝滚动
    Android本地视频播放器开发--视频解码
    uva 10196 Check The Check
    Oracle PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR
    Hibernate获取Connection
    SQL查询数据封装JavaBean对象
  • 原文地址:https://www.cnblogs.com/JN-PDD/p/6639302.html
Copyright © 2011-2022 走看看