zoukankan      html  css  js  c++  java
  • 查找文件【TLCL】

    • locate

    locate 执行快速的路径名数据库搜索,输出每个与指定子字符串相匹配的路径名。

    locate bin/zip

    locate 命令的数据库是updatedb命令创建的。

    • find

    locate只能依据文件名查找文件,而find命令能基于各种各样的属性 搜索一个给定目录(以及它的子目录),来查找文件.

    find ~            find 命令接收一个或多个目录名来执行搜索

    find ~ -type d         -type d 限制了只搜索目录

    find 命令支持的常见文件类型测试条件:

    b  块特殊设备文件

    c  字符特殊设备文件

    d  目录

    f  普通文件

    l  符号链接

    find ~ -type f -name "*.JPG" -size +1M | wc -l

    -name后面跟通配符模式,根据文件名来搜索。

    -size根据文件大小来搜索,+表示大于指定数的文件,-表示小于指定数的文件,没有则精确匹配这个数。

    b 512 byte blocks【默认】

    c bytes

    w two byte words

    k Kilobytes

    M Megabytes

    G Gigabytes

    需要数值参数的 =情况下,可以应用以上“+”和“-”符号表示法。

    -cmin n          匹配 【内容和属性】修改时间在n分钟前的文件和目录【“+”和“-”符号表示法】

    -ctime n          匹配 【内容和属性】修改时间在n*24小时前的文件和目录【“+”和“-”符号表示法】

    -cnewer file         匹配 【内容或属性】的最后修改时间晚于file的文件和目录

    -mmin n          匹配 【内容】修改时间在n分钟前的文件和目录【“+”和“-”符号表示法】

    -mtime n          匹配 【内容】修改时间在n*24小时前的文件和目录【“+”和“-”符号表示法】

    -newer file          匹配 【内容】的最后修改时间晚于file的文件和目录

    -user name          匹配 属于一个用户的文件和目录【用户名或用户ID来表示】

    -group name          匹配 属于一个组的文件和目录【组名或组ID来表示】

    -nouser            匹配 不属于一个有效用户的文件和目录

    -nogroup           匹配 不属于一个有效的组的文件和目录

    -iname pattern         跟-name相似,但不区分大小写。

    -name pattern         用指定的通配符模式匹配的文件和目录。

    -inum n            匹配inode号是n的文件。这对于找到某个特殊 inode 的所有硬链接很有帮助。

    -samefile name        类似于-inum 测试条件。匹配和文件 name 享有同样 inode 号的文件。

    -size n            匹配大小为n的文件

    -empty            匹配 空文件和目录

    -perm mode          匹配权限已经设置为指定的 mode的文件或目录【八进制或符号表示法】

    -type c             匹配文件类型是 c 的文件

    • 操作符

    -and/-a            两边的测试条件都是真【默认】

    -or              两边的任一个测试条件为真

    -not              Match if the test following the operator is false.

    ()                这用来控制逻辑计算的优先级,默认从左到右的顺序计算。

    find ~ ( -type f -not -perm 0600 ) -or ( -type d -not -perm 0700 )

    expr1 -operator expr2

    所有情况下,expr1总会执行,expr2要根据expr1的执行结果

    expr1 的结果操作符expr2 is...
    -and 总要执行
    -and 从不执行
    -or 从不执行
    -or 总要执行
    • 预定义操作

    -delete          删除当前匹配的文件

    -ls            执行ls -dils命令,将结果输出到标准输出

    -print           把匹配文件的全路径名输送到标准输出【默认】

    -quit            一旦找到一个,退出

    -exec command {} ;    {}是当前路径名的符号表示,分号是必要的分隔符表明命令的结束

    -ok command {} ;     执行每个指定的命令之前, 会提示用户

    花括号和分号对于 shell 有特殊含义,所以它们必须被引起来或被转义。

    find ~ -type f -name '*.BAK' -delete  【用-print操作替换-delete,确认结果】
    find ~ -type f -name 'foo*' -exec ls -l '{}' ';'

    find ~ -type f -name 'foo*' -exec ls -l '{}'
    + 【把末尾的分号改为+,把搜索结果结合为一个参数列表。】


    xargs 命令从标准输入接受输入,并把输入转换为一个特定命令的参数列表。
    find ~ -type f -name 'foo*' -print | xargs ls -l

     

    古怪名字处理方法:

    find ~ -iname ‘*.jpg’ -print0 | xargs –null ls -l

    使用这项技术,我们可以保证所有文件,甚至那些文件名中包含空格的文件,都能被正确地处理。

     

     其他选项

    -depth            先处理目录中的文件,再处理目录自身。

    -maxdepth levels        进入目录树的最大深度

    -mindepth levels        进入目录树的最小深度

    -mount            指示find不要搜索挂载到其他文件系统上的目录

    -noleaf            指示 find 程序不要基于自己在搜索 Unix 的文件系统的假设,来优化它的搜索。

  • 相关阅读:
    Java NIO中的缓冲区Buffer(二)创建/复制缓冲区
    Java NIO中的缓冲区Buffer(一)缓冲区基础
    Java中的反射
    Java SE 9(JDK9)环境安装及交互式编程环境Jshell使用示例
    Spring Data JPA例子[基于Spring Boot、Mysql]
    Spring Session
    Spring Data Redis示例
    Spring IO Platform简介及示例
    使用Spring Boot开发 “Hello World” Web应用
    2017/01/13,今天正好是开通博客园一周年,谈谈自己的一些想法
  • 原文地址:https://www.cnblogs.com/songdechiu/p/9966246.html
Copyright © 2011-2022 走看看