Linux find:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
无编辑摘要
无编辑摘要
第1行: 第1行:
=== 删除七天前文件 ===
Linux find 命令用于在指定目录下查找文件和目录。


* 前两个有问题,就是加上 -name 之后,过滤出来的文件时间范围不对
==== Format ====
find [路径] [匹配条件] [动作]
路径: 查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录


<nowiki>#</nowiki>Err : find /u01/app/archivelog -mtime +7 -type f -name *.arc -exec rm -f {} \;
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=修改)


<nowiki>#</nowiki>Err : find /u01/app/archivelog -mtime +7 -type f -name *.arc |xargs rm -f;
动作: 可选参数,用于对匹配到的文件执行操作,比如删除、复制等
  cd /u01/app
* 列出它们的完整路径: -exec ls -l {} \;
find archivelog/ -mtime +7 -type f |xargs rm -f;
* 执行删除操作: -exec rm {} \# 建议使用"|xargs rm -f;"


=== 当前子目录增加执行权限 ===
=== Sample ===
适用于http目录List中文件下载,无执行权限看不到目录
==== 删除七天前文件 ====
前两个有问题,就是加上 -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'"