find命令之exec

article/2025/10/11 10:13:17

find命令结合exec

find命令之exec

find命令结合exec

  • find命令结合exec
  • exec
  • exec参数说明
  • 使用实例
    • 1. 查找当前目录下的文件,并对查找结果执行ls -l 命令
    • 2. 查找当前目录下,24小时内更改过的文件,并进行删除操作(慎用!!!,删除没有提示)
    • 3. 查找当前目录下文件名以.log结尾且24小时内更改过的文件,并进行安全删除操作(即删除前会进行询问)
    • 4. 查找当前目录下的以.log结尾的文件或目录,并移动到test目录下
    • 5 -mtime


exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。

exec参数说明

-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

{} 花括号代表前面find查找出来的文件名。

使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

使用实例

1. 查找当前目录下的文件,并对查找结果执行ls -l 命令

命令:

[root@trade sh]# touch file{1..5}.sh
[root@trade sh]# find . -type f -exec ls -l {} \; 
或者
[root@trade sh]# find /root/sh -type f -exec ls -l {} \; 

输出:

[root@trade sh]# find . -type f -exec ls -l {} \;
-rw-r--r--. 1 root root 0 Aug 17 09:29 ./file5.sh
-rw-r--r--. 1 root root 0 Aug 17 09:29 ./file4.sh
-rw-r--r--. 1 root root 0 Aug 17 09:29 ./file1.sh
-rw-r--r--. 1 root root 0 Aug 17 09:29 ./file2.sh
-rw-r--r--. 1 root root 0 Aug 17 09:29 ./file3.sh

2. 查找当前目录下,24小时内更改过的文件,并进行删除操作(慎用!!!,删除没有提示)

命令:

[root@trade sh]# find /root/sh -type f -name "*.sh" -mtime 0 -exec rm -fr {} \;
或者
find -type f -mtime -1 -exec rm {} \;

输出

[root@trade sh]# ll
total 4
-rw-r--r--. 1 root root    0 Aug 17 09:37 file1.sh
-rw-r--r--. 1 root root    0 Aug 17 09:37 file2.sh
-rw-r--r--. 1 root root    0 Aug 17 09:37 file3.sh
-rw-r--r--. 1 root root    0 Aug 17 09:37 file4.sh
-rw-r--r--. 1 root root    0 Aug 17 09:37 file5.sh
drwxr-xr-x. 2 root root 4096 Aug 16 13:48 test
[root@trade sh]# find /root/sh -type f -name "*.sh" -mtime 0 -exec rm -fr {} \;
[root@trade sh]# ll
total 4
drwxr-xr-x. 2 root root 4096 Aug 16 13:48 test

最好这样使用命令:

[root@trade sh]# ls
file1.sh  file2.sh  file3.sh  file4.sh  file5.sh  test
[root@trade sh]# find /root/sh -type f -name "*.sh" -mtime 0                   
/root/sh/file5.sh
/root/sh/file4.sh
/root/sh/file1.sh
/root/sh/file2.sh
/root/sh/file3.sh
[root@trade sh]# find /root/sh -type f -name "*.sh" -mtime 0 -exec rm -fr {} \;
[root@trade sh]# ls
test

说明:
在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。

3. 查找当前目录下文件名以.log结尾且24小时内更改过的文件,并进行安全删除操作(即删除前会进行询问)

[root@trade sh]# touch {1..2}.log 
[root@trade sh]# find -name "*.log" -type f  -mtime 1 -ok rm {} \;
< rm ... ./1.log > ? y
< rm ... ./2.log > ? y

说明:
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

4. 查找当前目录下的以.log结尾的文件或目录,并移动到test目录下

命令:

[root@trade sh]# touch {1..2}.log 
[root@trade sh]# find -name "*.log" -exec mv {} test \;

输出

[root@trade sh]# ls
test
[root@trade sh]# cd test/
[root@trade test]# ls
1.log  2.log

5 -mtime

在这里插入图片描述其中 Linux 不支持查看文件创建时间,使用命令 stat 查看文件信息示例如下:
在这里插入图片描述
我们可以使用 find -mtime 来找某时间点之前的文件,并在此基础上进行处理(如定期删除过期文件)。

find -mtime 后跟一个数字参数 +N/-N/N,说明如下:

1、-mtime n : n为数字,意思为在n天之前的“一天之内”被更改过内容的文件
2、-mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名
3、-mtime -n : 列出在n天之内(含n天本身)被更改过内容的文件名

在这里插入图片描述在这里插入图片描述
由以上时间轴可以看出,最右边为当前时,+5 代表大于等于 6 天前的档案名, -5 代表小于等于 5 天内的档案名,5 则是代表 5-6 那一天的档案名。

同理:
-ctime
-atime


(END)

http://chatgpt.dhexx.cn/article/rRQRKreD.shtml

相关文章

Find 命令详解

find命令详解 命令语法格式&#xff1a;find查找路径查找条件信息 查找路径是指查找范围&#xff0c;使用该命令时需要指定一个范围&#xff0c;在该范围内查找。 查找条件分类&#xff1a; ①按文件名称查找 -name文件名称 ②按文件类型查找 &#xff08;文件类型又分为普通…

Linux命令之find命令

一、命令简介 Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时&#xff0c;不设置任何参数&#xff0c;则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。find 命令有非常…

Find命令的7种用法

Find对于技术面试&#xff0c;它也是一个热门话题。让我们看一道真题&#xff1a; 如果你的 Linux 服务器上有一个名为 logs 的目录&#xff0c;如何删除该目录下最后一次访问时间超过一年的日志文件呢&#xff1f; 这种情况很常见&#xff0c;但令人惊讶的是&#xff0c;并非…

find命令,详细

find命令&#xff0c;查找文件和目录 find查找命令是Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的条件来搜索和查找文件和目录列表的命令。查找可以在各种条件下使用&#xff0c;您可以通过权限&#xff0c;用户&#xff0c;组&#xff0c;文件类…

Linux常用命令——find命令大全

一、find命令常用功能 1、find命令的基本信息如下。 命令名称&#xff1a;find。英文原意&#xff1a;search for files in a directory hierarchy。所在路径&#xff1a;/bin/find。执行权限&#xff1a;所有用户。功能描述&#xff1a;在目录中搜索文件。 2、按照文件名搜…

linux内存管理系统

1. linux内存管理系统 1. 1 内存配置 vim .config 由上图可知&#xff0c;当前系统配置的内存资源为&#xff1a; 虚拟页大小4KiB 虚拟地址带宽48bit 物理地址带宽48bit 4级页表&#xff0c;pgd pud pmd pte 1.2 查看内存页的布局情况 make menuconfig利用qemu环境进行…

Linux内存管理详解

前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间&#xff0c;但是还是有很多问题不是很清楚&#xff0c;最近又花了一些时间复习了一下&#xff0c;在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。 我比较喜欢搞清楚一个技术本身的发展历程…

深入理解Linux内存管理

1.1 内存管理的意义1.2 原始内存管理1.3 分段内存管理1.4 分页内存管理1.5 内存管理的目标1.6 Linux内存管理体系2.1 物理内存节点2.2 物理内存区域2.3 物理内存页面2.4 物理内存模型2.5 三级区划关系3.1 Buddy System 3.1.1 伙伴系统的内存来源3.1.2 伙伴系统的管理数据结构3.…

【linux kernel】linux内存管理 | 分配物理内存页面

文章目录 一、物理内存分配概述二、分配核心函数&#xff08;__alloc_pages_nodemask&#xff09;&#xff08;2-1&#xff09;重要函数1&#xff1a;&#xff08;get_page_from_freelist()&#xff09;&#xff08;2-2-1&#xff09;for_each_zone_zonelist_nodemask{} &#…

深度讲解Linux内存管理和Linux进程调度-打通任督二脉

《穆赫兰道》与《内陆帝国》 我在多年的工程生涯中发现很多工程师碰到一个共性的问题&#xff1a;Linux工程师很多&#xff0c;甚至有很多有多年工作经验&#xff0c;但是对一些Linux内存管理和linux进程管理关键概念的理解非常模糊&#xff0c;比如不理解CPU、内存资源等的真正…

Linux内存管理机制

在Linux中经常发现空闲内存很少&#xff0c;似乎所有的内存都被系统占用了&#xff0c;表面感觉是内存不够用了&#xff0c;其实不然。这是Linux内存管理的一个优秀特性&#xff0c;主要特点是&#xff0c;无论物理内存有多大&#xff0c;Linux 都将其充份利用&#xff0c;将一…

关于linux内存管理

Linux的内存管理主要分为两部分&#xff1a;物理地址到虚拟地址的映射&#xff0c;内核内存分配管理&#xff08;主要基于slab&#xff09;。 物理地址到虚拟地址之间的映射 1、概念 物理地址(physical address) 用于内存芯片级的单元寻址&#xff0c;与处理器和CPU连接的地址…

深入理解Linux内存管理-之-目录导航

日期内核版本架构作者GitHubCSDN2016-08-31Linux-4.7X86 & armgatiemeLinuxDeviceDriversLinux内存管理 1 内存描述 CSDNGitHubLinux内存描述之概述–Linux内存管理(一)01-description/01-memoryLinux内存描述之内存节点node–Linux内存管理(二)01-description/02-nodeLin…

Linux内存管理(下)

Linux内存管理(下) 物理内存管理&#xff08;页管理&#xff09; Linux内核管理物理内存是通过分页机制实现的&#xff0c;它将整个内存划分成无数4k(在i386体系结构中)大小页&#xff0c;从而分配和回收内存的基本单位便是内存页了。利用分页管理有助于灵活分配内存地址&…

Linux中的内存管理机制

Linux中的内存管理机制 ​ 程序在运行时所有的数据结构的分配都是在堆和栈上进行的&#xff0c;而堆和栈都是建立在内存之上。内存作为现代计算机运行的核心&#xff0c;CPU可以直接访问的通用存储只有内存和处理器内置的寄存器&#xff0c;所有的代码都需要装载到内存之后才能…

Linux - 内存管理

【1】前言 内存管理是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效&#xff0c;快速的分配&#xff0c;并且在适当的时候释放和回收内存资源。 内存管理是操作系统很重要的一部分。作为一个后端开发来说&#xff0c;了解操作系统是如何进行内存…

Linux的内存管理

Linux的内存管理 Linux的内存管理是一个非常复杂的过程&#xff0c;主要分成两个大的部分&#xff1a;内核的内存管理和进程虚拟内存。内核的内存管理是Linux内存管理的核心&#xff0c;所以我们先对内核的内存管理进行简介。 一、物理内存模型 物理内存模型主要分为两种&…

Linux内存管理(上)

Linux内存管理(上) 摘要&#xff1a;本章首先以应用程序开发者的角度审视Linux的进程内存管理&#xff0c;在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。力求从外自内、水到渠成地引导网友分析Linux地内存管理与使用。在本章最后我们给出一个内存映射…

【纯干货】Linux内存管理(最透彻的一篇)

摘要&#xff1a;本章首先以应用程序开发者的角度审视Linux的进程内存管理&#xff0c;在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后&#xff0c;我们给出一个内存映射的实例…

Linux内存管理方式

目录 前言 内存管理方式 分段式 分页式 段页式 虚拟地址如何映射到物理地址 缺页中断 内存交换 内存置换算法 前言 之前说过linux中的程序地址空间是使用的虚拟地址&#xff0c;虚拟地址和真实的物理地址有着某种特殊的映射关系&#xff08;MMU&#xff0c;全称Memory Ma…