Linux find:修订间差异
跳到导航
跳到搜索
小无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
Linux find 命令用于在指定目录下查找文件和目录。 | |||
==== Format ==== | |||
find [路径] [匹配条件] [动作] | |||
路径: 查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录 | |||
Expression: 可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。 | |||
* 按文件名称查找: -name pattern (支持使用通配符 * 和 ?) | |||
* 按文件类型查找: -type TYPE (TYPE = f(普通文件)、d(目录)、l(符号链接)等) | |||
* 按文件大小查找: -size [+-]N[cwbkMG] (+/- 大于/小于,N 是一个整数c(字节)、w(字数)、b(块数)、k/M/G) | |||
* 按修改时间查找: -mtime [+-]N (+/- 表示在指定天数前或后,N 是一个整数表示天数) | |||
* 按修改时间查找: -amin n:查找在 n 分钟内被访问过的文件(a=访问, c=状态变化, m=修改) | |||
动作: 可选参数,用于对匹配到的文件执行操作,比如删除、复制等 | |||
* 列出它们的完整路径: -exec ls -l {} \; | |||
* 执行删除操作: -exec rm {} \; # 建议使用"|xargs rm -f;" | |||
=== 当前子目录增加执行权限 === | === Sample === | ||
==== 删除七天前文件 ==== | |||
前两个有问题,就是加上 -name 之后,过滤出来的文件时间范围不对 | |||
# Err : find /u01/app/archivelog -mtime +7 -type f -name *.arc -exec rm -f {} \; | |||
# Err : find /u01/app/archivelog -mtime +7 -type f -name *.arc |xargs rm -f; | |||
--- | |||
find /u01/app/archivelog/ -mtime +7 -type f |xargs rm -f; | |||
## !! 不要使用 cd $PATH,再 find . 方法,在 $PATH 不存在时会出问题 | |||
==== 当前子目录增加执行权限 ==== | |||
适用于 http 目录 List 中文件下载,无执行权限看不到目录等情况 | |||
chmod +x `find . -type d` | chmod +x `find . -type d` | ||
=== 在多台机器中查找大文件 === | ==== 在多台机器中查找大文件 ==== | ||
# m02:/data/ndb | # m02:/data/ndb | ||
./rrun ip_all "find / -type f -size +1G 2>/dev/null|grep '.zip'" | ./rrun ip_all "find / -type f -size +1G 2>/dev/null|grep '.zip'" | ||
[[分类:Develop]] | [[分类:Develop]] | ||
[[分类:Linux]] | [[分类:Linux]] |
2024年5月9日 (四) 10:38的版本
Linux find 命令用于在指定目录下查找文件和目录。
Format
find [路径] [匹配条件] [动作]
路径: 查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录
Expression: 可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
- 按文件名称查找: -name pattern (支持使用通配符 * 和 ?)
- 按文件类型查找: -type TYPE (TYPE = f(普通文件)、d(目录)、l(符号链接)等)
- 按文件大小查找: -size [+-]N[cwbkMG] (+/- 大于/小于,N 是一个整数c(字节)、w(字数)、b(块数)、k/M/G)
- 按修改时间查找: -mtime [+-]N (+/- 表示在指定天数前或后,N 是一个整数表示天数)
- 按修改时间查找: -amin n:查找在 n 分钟内被访问过的文件(a=访问, c=状态变化, m=修改)
动作: 可选参数,用于对匹配到的文件执行操作,比如删除、复制等
- 列出它们的完整路径: -exec ls -l {} \;
- 执行删除操作: -exec rm {} \; # 建议使用"|xargs rm -f;"
Sample
删除七天前文件
前两个有问题,就是加上 -name 之后,过滤出来的文件时间范围不对 # Err : find /u01/app/archivelog -mtime +7 -type f -name *.arc -exec rm -f {} \; # Err : find /u01/app/archivelog -mtime +7 -type f -name *.arc |xargs rm -f; --- find /u01/app/archivelog/ -mtime +7 -type f |xargs rm -f; ## !! 不要使用 cd $PATH,再 find . 方法,在 $PATH 不存在时会出问题
当前子目录增加执行权限
适用于 http 目录 List 中文件下载,无执行权限看不到目录等情况 chmod +x `find . -type d`
在多台机器中查找大文件
# m02:/data/ndb ./rrun ip_all "find / -type f -size +1G 2>/dev/null|grep '.zip'"