Linux[find命令]-根据路径和条件搜索指定文件并删除

这篇具有很好参考价值的文章主要介绍了Linux[find命令]-根据路径和条件搜索指定文件并删除。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、find命令简介

find命令:用于根据给定的路径和条件查找相关文件或目录,参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能。

基本语法格式:find pathname -options 搜索内容 [其他选项]

  • pathname:用来指定搜索路径。
  • options:用来指定搜索内容。
  • 搜索内容:用来指定搜索内容,支持正则表达式。
  • 其他选项:
    • -print选项:将find命令匹配的文件输出到标准输出。
    • -exec选项:进一步处理搜索结果。

find命令通常进行的是从根目录(/)开始的全盘搜索,不建议过大路径的搜索范围,会消耗较大的系统资源,导致服务器压力过大。

常用 options参数:

linux删除查找到的文件,# Linux,Linux-find命令,find命令-搜索指定文件

二、常用 options参数搜索

[root@centos7 temp2]# tree /usr/local/temp2/
/usr/local/temp2/
├── 2023-10-09
│   ├── 10
│   │   └── Test1.log
│   └── test1.log
├── 2023-10-10
│   └── test1.log
├── test.log
└── Test.log

3 directories, 5 files

1、按文件名搜索

options参数:

  • -name:按文件名搜索,区分文件名大小写
  • -iname:按文件名搜索,不区分文件名大小写
  • -inum: 按inode号搜索

(1)-name和-iname

Linux 中的文件名是区分大小写的。

[root@centos7 temp2]# find /usr/local/temp2/ -name test.log
/usr/local/temp2/test.log
[root@centos7 temp2]# find ./ -iname test.log
./test.log
./Test.log

(2)-inum

每个文件都有 inode 号,如果我们知道 inode 号,则也可以按照 inode 号来搜索文件。

# ls -i 显示文件的inode属性信息
[root@centos7 temp2]# ll -i ./
total 8
237180303 drwxr-xr-x 3 root root 33 Oct 10 14:21 2023-10-09
252355940 drwxr-xr-x 2 root root 23 Oct 10 14:19 2023-10-10
169322632 -rw-r--r-- 1 root root 32 Oct 10 14:19 test.log
169322631 -rw-r--r-- 1 root root 32 Oct 10 14:19 Test.log
[root@centos7 temp2]# find ./ -inum 169322632
./test.log
[root@centos7 temp2]# find /usr/local/temp2/ -inum 169322632
/usr/local/temp2/test.log

2、按文件类型搜索

options参数:

  • -type d:查找目录
  • -type f:查找普通文件
  • -type l:查找软链接文件

示例如下:

[root@centos7 temp2]# find /usr/local/temp2/ -type f
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
[root@centos7 temp2]# find /usr/local/temp2/ -type d
/usr/local/temp2/
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-09/10
/usr/local/temp2/2023-10-10

3、基于目录深度搜索

find 命令是递归遍历查找文件夹,列出当前目录及子目录下所有文件。

options参数:

  • -maxdepth LEVELS:按最大深度显示。
  • -mindepth LEVELS:按最少深度显示。

示例如下:

# 搜索目录下面最多1个子目录深度的所有目录
[root@centos7 temp2]# find /usr/local/temp2/ -maxdepth 1 -type d
/usr/local/temp2/
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-10
# 搜索目录下面最多1个子目录深度的所有文件
[root@centos7 temp2]# find /usr/local/temp2/ -maxdepth 1 -type f
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
# 搜索目录下面最少1个子目录深度的所有文件
[root@centos7 temp2]# find /usr/local/temp2/ -mindepth 1 -type f
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
# 搜索目录下面最少2个子目录深度的所有文件
[root@centos7 temp2]# find /usr/local/temp2/ -mindepth 2 -type f
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log

4、按修改时间搜索

options参数:

  • -atime[±]时间:按文件访问时间搜索,记录文件最后一次被访问的时间。
  • -mtime[±]时间:按文件数据修改时间搜索,当对这个文件内容进行修改后,modify显示的时间就会更新一次。
  • -ctime[±]时间:按文件状态修改时间搜索,当文件内容、更改文件权限,链接属性时随文件inode更改而改变的时间。

以-mtime来举例 “[±]” 时间的含义:

  • +5:代表 6天前修改的文件。
  • 5:代表前 5-6天的那一天修改的文件。
  • -5:代表最近 5天内修改的文件。

示例如下:

# 查找 6天前修改的内容
[root@centos7 temp2]# find /usr/local/temp2 -mtime +5
# 查找 5~6 天那一天修改的内容
[root@centos7 temp2]# find /usr/local/temp2 -mtime 5
# 查找 5天内修改的文件,最大深度为1
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
# 查找最近 5天内修改的目录,最大深度为1
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type d -mtime -5
/usr/local/temp2
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-10

5、按文件大小搜索

options参数:

  • -size[±]大小:按照指定大小搜索文件。

其中:

  • +:表示搜索比指定大小还要大的文件。
  • -:表示搜索比指定大小还要小的文件。

find 默认的单位是512Byte,如果单位为b或不写单位,则按照 512Byte搜索,其他大小搜索单位如下:

'c' for bytes
 #搜索单位是c,按照字节搜索
'w' for two-byte words
#搜索单位是w,按照双字节(中文)搜索
'k'for Kilobytes (units of 1024 bytes)
#按照KB单位搜索,必须是小写的k
'M' for Megabytes (units of 1048576 bytes)
#按照MB单位搜索,必须是大写的M
'G' for Gigabytes (units of 1073741824 bytes)
#按照GB单位搜索,必须是大写的G

示例如下:

# 查找最近 5天内修改的文件,最大深度为1,size小于2M
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5 -size -2M
/usr/local/temp2/test.log
/usr/local/temp2/Test.log

三、其他选项

1、-print选项

基本语法格式:find pathname -options 搜索内容 -print

-print选项:将find命令匹配的文件输出到标准输出到屏幕。

[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5 -print
/usr/local/temp2/test.log
/usr/local/temp2/Test.log
[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type d -mtime -5 -print
/usr/local/temp2
/usr/local/temp2/2023-10-09
/usr/local/temp2/2023-10-10

2、-exec选项

基本语法格式:find pathname -options 搜索内容 -exec 命令2 {} ;

-exec选项:作用其实是把 find 命令的结果交给由"-exec"调用的 命令2 来处理。

  • “{}”:代表 find 命令的査找结果,
  • “;”:\ 做转义,;是结束符。

注意:这里的“{}”和“;”是标准格式,只要执行”-exec"选项,这两个符号必须完整书写,并且{} 与 \之间有空格。

示例1:找到文件并打印 inode 号

[root@centos7 temp2]# find /usr/local/temp2 -type f -mtime -5 -exec ls -i {} \;
237180309 /usr/local/temp2/2023-10-09/test1.log
69506504 /usr/local/temp2/2023-10-09/10/Test1.log
252355944 /usr/local/temp2/2023-10-10/test1.log
169322632 /usr/local/temp2/test.log
169322631 /usr/local/temp2/Test.log

示例1:找到文件并删除

[root@centos7 temp2]# find /usr/local/temp2 -maxdepth 1 -type f -mtime -5 -exec rm -rf {} \;
[root@centos7 temp2]# ls
2023-10-09  2023-10-10

3、-ok选项

基本语法格式:find pathname -options 搜索内容 -ok 命令2 {} ;

-ok选项与"-exec"选项的作用基本一致,区别在于:

  • “-exec”的命令2会直接处理,而不询问;
  • “-ok”的命令2 在处理前会先询问用户是否这样处理,在得到确认命令后,用户输入y才会执行。

示例:找到目录并询问用户是否删除。

[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type f -mtime -5 -print
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-09/10/Test1.log
/usr/local/temp2/2023-10-10/test1.log
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type d -mtime -5 -print
/usr/local/temp2/2023-10-09/10
# 找到目录并询问用户是否删除。# 需要用户输入y,才会执行
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type d -mtime -5 -ok rm -rf {} \;
< rm ... /usr/local/temp2/2023-10-09/10 > ? y  
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type d -mtime -5 -print
[root@centos7 temp2]# find /usr/local/temp2 -mindepth 2 -type f -mtime -5 -print
/usr/local/temp2/2023-10-09/test1.log
/usr/local/temp2/2023-10-10/test1.log

参考文章:

  • find命令 – 根据路径和条件搜索指定文件:https://www.linuxcool.com/find

– 求知若饥,虚心若愚。文章来源地址https://www.toymoban.com/news/detail-751686.html

到了这里,关于Linux[find命令]-根据路径和条件搜索指定文件并删除的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 搜索文件中find和grep命令的区别

    在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。 (1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。 (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定

    2024年02月16日
    浏览(81)
  • Linux如何使用find命令搜索到自己想要的文件呢?

    文件搜素专栏全部文章 如何使用find命令搜索到自己想要的文件 ack 命令的基本用法详解 ag命令的使用详解 在 Linux 中查找文件名包含某个的文件,可以使用  find  命令来实现。 find  命令可以在指定目录下递归搜索文件,并根据指定的条件进行过滤。 下面是使用  fi

    2024年02月03日
    浏览(70)
  • Linux 下使用 tar 命令打包指定目录下的所有文件,不包含路径方法

    一,问题描述 例如:需要打包/data/android_data/VMRK02ejyijtyww20 文件夹到/data/testtar/目录下 一般我们使用命令如下命令 当我们解VMRK02ejyijtyww20.tar压缩包后发现,把路径也打包进去了, 即/data/android_data/VMRK02ejyijtyww20;而大多数情况,我们解压后只需要的是VMRK02ejyijtyww20文件夹 二、打包

    2024年02月16日
    浏览(57)
  • linux find命令搜索日志内容

    linux find命令搜索日志内容 加上-a 是为了不报查出 binary 的错 服务器会返回 包含所查字符的整行日志信息

    2024年02月07日
    浏览(52)
  • linux根据文件名查找文件路径

     举个例子:

    2024年02月17日
    浏览(62)
  • Linux find 文件目录搜索工具

    目录 前言 基本用法 查找文件通配符匹配 查找文件并打印到标准输出 查找文件并删除 根据文件大小查找 根据文件修改时间查找 查找空文件或目录 查找文件类型 find 是一个在Linux系统中非常强大和灵活的文件搜索工具。它用于在文件系统中查找文件和目录,并可以执行各种

    2024年02月08日
    浏览(79)
  • linux根据服务名称查服务文件夹路径

    ps -ef |grep java| grep -v grep | awk \\\'{ print $2 }\\\' -e   显示所有进程。 -f    全格式。 grep -v grep是在Linux系统的某些时刻下查看进程的命令,它的作用是排除grep进程本身。 启动: #!/usr/bin/bash PID=$(ps -ef | grep serverName | grep -v grep | awk \\\'{ print $2 }\\\') if [ -z \\\"$PID\\\" ]; then     echo Application i

    2024年01月17日
    浏览(42)
  • jar 命令启动java 指定配置文件路径 jar如何启动

    一、各种启动方式 1.java -jar # 例子 java -jar test.jar 1. 2. 这是最简单的启动方式,同时弊端也是很多的。 弊端1:exit 退出终端会导致java进程中断。 弊端2:ctrl+c 退出启动展示页会导致java进程中断。 弊端3:直接关闭终端会导致java进程中断(启动时和启动完关闭都会导致java进程终

    2024年02月04日
    浏览(53)
  • uniApp h5项目通过命令行打包,并生成指定路径、文件名称

    第一步:采用hbuilder新建一个项目 第二部:通过cli新建一个项目 创建命令: 创建成功之后先运行一下项目,如果启动失败 Error: Cannot find module ‘webpack/lib/RuleSet‘ 我们将hb的项目作为基础 回到主题,将hb项目作为基础, 第一步:新建src文件夹,将以下文件放入src文件夹中  第

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包