一, 命令简介:
find 顾名思义就是查找文件的意思, 能在系统中寻找你想要的文件. 日常使用 Linux 系统中可能会经常用到这个命令, 非常实用, 掌握这个命令的用法会使你的工作更加效率
二, 主要语法:
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
参数 | 说明 |
---|---|
-name | 按名称查找 |
-size | 按大小查找 |
-user | 按文件属主查找 |
-type | 按类型查找 |
-mtime | 按照文件的更改时间查找 |
-atime | 按照文件的访问时间查找 |
-perm | 按照文件权限查找 |
-regex | 按照正则表达查找 |
一般情况下使用 - name 选项匹配字符串即可, 复杂一点的可以使用正则表达式 - regex 选项
这里只列举比较常用的选项, 具体的其他选项参数可以使用 info find 或 man find 命令进行查询
三, 操作实例:
查找根目录下. c 后缀的所有并打印出来
[[email protected] ~]# find / -type f -name "*.c" -print
查找 / etc / 目录下大于 2M 的所有文件
find /etc -size +2M
搜索当前目录下七天内被访问过的所有文件
find . -type f -atime -7
找出 / var/log 下不是以. log 结尾的文件
find /var/log/ -type f ! -name '*.log'
找出所有以. py 和. sh 为后缀的所有文件
find / -regex ".*\(\.py\|\.sh\)$"
关于 - print0 与 xargs -0 的原理和用法:
find -print0 表示在 find 的每一个结果之后加一个 NULL 字符, 而不是默认加一个换行符. find 的默认在每一个结果后加一个'\n', 所以输出结果是一行一行的. 当使用了 - print0 之后, 就变成一行了
然后 xargs -0 表示 xargs 用 NULL 来作为分隔符. 这样前后搭配就不会出现空格和换行符的错误了. 选择 NULL 做分隔符, 是因为一般编程语言把 NULL 作为字符串结束的标志, 所以文件名不可能以 NULL 结尾, 这样确保万无一失.
推荐用法:
find / -name "*.txt" -print0 | xargs -0 rm
来源: http://www.bubuko.com/infodetail-3382593.html