Linux 命令 —— find

find,Linux常用文件搜索命令简要整理

基本用法

find基本用法如:find [path] <search regular> [action]

  • 可选参数path,支持空格分隔的多路径查找,默认为当前路径
  • 可选参数action
    • -print,匹配文件输出到stdout,默认
    • -exec,对find匹配到的文件执行该参数所给出的shell命令,格式为command { } \;,其中{}表示匹配文件
    • -ok,于-exec类似,执行前给出提示是否执行
  1. 文件名

    1
    2
    3
    find [path] -name <name>
    find [path] -iname <name> #不区分大小写
    # 其中<name>支持通配符,一般使用时建议增加单引号
  2. 文件类型,一般配合其他搜索参数一起使用

    1
    2
    find [path] -type [bdcplf]
    # 其中d表示目录,l表示链接,f表示文件
  3. 文件大小

    1
    2
    3
    # -size 参数支持+-表示大于小于,ckMG表示数据单位
    find [path] -size +10M #path下大于10M的文件
    find [path] -size -1G #path下小于1G的文件
  4. 时间戳

    1
    2
    3
    4
    find [path] -mtime -n +m    #更改时间为m天前n天内的文件
    find [path] -atime -n +m #访问时间
    find [path] -ctime -n +m #创建时间
    # mtime参数后数字表示天, mmin参数后数字表示分钟
  5. 文件属主

    1
    2
    3
    4
    find [path] -user <user_name>    #path下属主为user_name的文件
    find [path] -group <group_name> #path下组名为group_name的文件
    find [path] -nouser #用户ID不存在的文件
    find [path] -nogroup #组ID不存在的文件
  6. 文件权限

    1
    2
    3
    4
    find [path] -perm 755    #权限设置为755的文件
    find [path] -perm -u=r #文件属主有读权限的目录或文件
    find [path] -perm -g=r #用户组有读权限的目录或文件
    find [path] -perm -o=r #其它用户有读权限的目录或文件
  7. 其他搜索参数

    1
    2
    3
    4
    find [path] <search_regular> [option]
    # -follow 追踪链接文件
    # -mount 不跨越文件系统mount点
    # -empty 空文件

示例

  1. 多筛选条件组合

    1
    2
    3
    4
    find [path] -name '*R' -a -mtime -1    #修改时间一天内的R脚本文件
    #-a | -and # 同时满足
    #-o | -or # 或
    #-not # 条件取反
  2. 几个例子,来自微博@linux命令行精选网

    1
    2
    3
    4
    5
    6
    find . ! -name <NAME> -delete    #用find删除文件时候排除特定文件
    find . -type l -xtype l #查找失效的符号链接
    find . -iname '*.jpg' | sed 's/.*/<img src="&">/' > gallery.html #生成html 相册
    find . -size 0 -exec rm '{}' \; #清理空文件
    find . -type d -exec mkdir -p $DESTDIR/{} \; #复制一个目录的结构,忽略文件
    find . -type f -size +500M -exec ls -ls {} \; | sort -n #找出所有大于500M的文件
---------本文结束,感谢您的阅读---------