例题:使用一条命令将xxx目录下除了xx子目录之外的文件全部删除(find、管道、grep、exec)

news2025/1/23 13:02:54

文章目录

  • 例题:删除xx子目录以外的所有目录和文件
    • 需求
    • 方式一
    • 方式二


例题:删除xx子目录以外的所有目录和文件

需求

使用一条命令将/opt目录下除了rh子目录之外的文件全部删除

[root@localhost opt]# cp /var/log/vm* /opt/
[root@localhost opt]# mkdir abc
[root@localhost opt]# touch 1.txt
[root@localhost opt]# ls
1.txt                 vmware-network.4.log  vmware-network.log
abc                   vmware-network.5.log  vmware-vgauthsvc.log.0
rh                    vmware-network.6.log  vmware-vmsvc.log
vmware-network.1.log  vmware-network.7.log  vmware-vmusr.log
vmware-network.2.log  vmware-network.8.log
vmware-network.3.log  vmware-network.9.log

文件结构如上

方式一

步骤

  1. 检查目录和文件:
    在这里插入图片描述

  2. 执行条件删除命令:

在这里插入图片描述

或者
在这里插入图片描述

  1. 删除后检查有没有漏删误删:
    在这里插入图片描述

没有漏删误删,任务完成。

方式二

先利用ls 或find 筛选出目录下的内容,ls /opt >> 1.txx 追加输入到文件中,再使用&& 连接后面grep -v语句和删除语句

示例

ls /opt/ >> 1.txt && grep -v "rh" 1.txt | xargs rm -rf

分段解释

  1. ls /opt/ >> 1.txt:列出 /opt/ 目录下的所有文件和目录,并将这些内容追加到当前目录下的 1.txt 文件中。如果 1.txt 文件不存在,会自动创建。

    “>>”的作用:向文件追加内容,将标准输入输出到后文标准输出的xxx位置。“>>” 追加,“>”覆盖。

    例如 echo "hello" >> 1.txt

  2. grep -v "rh" 1.txt:读取 1.txt 文件中的内容,并使用 grep 命令和 -v 选项来排除(即不输出)包含字符串 “rh” 的行。即:如果/opt/ 目录下的某个文件或目录名包含 “rh”,将不会出现在 grep 命令的输出中。

  3. xargs rm -rfxargs 命令从标准输入(在这里是 grep 命令的输出)读取数据,并将这些数据作为参数传递给 rm -rf 递归地强制删除文件或目录。

  4. xargsrm, ls, cp 这三个命令直接使用管道符连接执行会有“问题”,即不能将它们的输出(特别是 ls 的输出)直接通过管道传递给另一个命令(如 rmcp)。这些命令需要它们的参数(即文件名或目录名)在命令行上直接给出,而不是通过标准输入接收。

    使用 xargs ,将多行内容转为单行内容,作为单个参数传递执行给右侧的指令执行。

    若不使用 xargs ,做不到实际传参的效果,两条进程任务独立执行,有可能会高危删除。
    例如,使用 ls | rm 是不正确的,因为 rm 命令不会从标准输入读取文件名来删除。相反,它会删除名为 ls 命令输出的文本字符串。

注意

如果 1.txt 文件中的文件名包含空格或特殊字符,直接使用 xargs rm -rf 可能会导致问题,因为 xargs 默认将输入视为由空格分隔的参数,因此会导致错误地删除文件或目录。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(一)循环依赖,你真的懂了吗?万字解析循环依赖底层原理 - 什么是Bean循环依赖?Spring是如何解决的?二级缓存可以解决吗?遇到相关报错如何处理?

theme: vuepress 一、相关知识点简介 Spring Boot是基于Spring框架的一个快速开发平台,旨在简化Spring应用的创建和部署。通过提供一系列开箱即用的默认配置和自动化工具,Spring Boot使开发者能够专注于业务逻辑,而无需处理复杂的配置和依赖…

【Python机器学习】支持向量机——在复杂数据上应用核函数

上图中,数据中存在某种可以识别的模式,其中一个问题就是:我们能否想线性情况一样,利用强大的工具来捕捉数据中的这种模式? 利用核函数将数据映射到高维空间 在上图中,数据点处于一个圆中,人类…

《零散知识点 · 自定义 HandleMapping》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

[独家原创] CPO-RBF多特征分类预测 优化宽度+中心值+连接权值 (多输入单输出)Matlab代码

[独家原创] CPO-RBF多特征分类预测 优化宽度中心值连接权值 (多输入单输出)Matlab代码 目录 [独家原创] CPO-RBF多特征分类预测 优化宽度中心值连接权值 (多输入单输出)Matlab代码效果一览基本介绍程序设计参考资料 效果一览 基本…

算法--初阶

1、tips 1.1、set求交集 {1,2,3} & {2,3} & {1,2} {2} 其实就是位运算, 只有set可以这样使用, list没有这种用法 {1,2,3} | {2,3, 4} | {1,2} {1, 2, 3, 4} 并集 1.2、*与** * 序列(列表、元组)解包,如果是字典,那…

15.75.【C语言】表达式求值

目录 一.整型提升 1.定义 2. 一.整型提升 1.定义 C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升 2.整型提…

C++初学者指南-5.标准库(第二部分)--移除元素算法

C初学者指南-5.标准库(第二部分)–移除元素算法 文章目录 C初学者指南-5.标准库(第二部分)--移除元素算法remove / remove_ifremove_copy / remove_copy_ifunique / unique_copyerase / erase_if相关内容 不熟悉 C 的标准库算法? ⇒ 简介 remove / remove…

还有谁分不清Oracle认证里的OCA、OCP、OCM?

在IT行业,Oracle认证是许多专业人士提升技能和职业竞争力的重要途径。 Oracle认证是一套由Oracle公司提供的全球认可的专业资格认证体系,旨在证明个人在Oracle数据库及相关技术领域的专业技能和知识水平。 Oracle认证作为数据库认证中的天花板&#xff0…

目标检测——GDXray数据集转为YOLO格式

关于该数据集的介绍可以看我写的另一篇博客:链接 论文题目:《GDXray: The Database of X-ray Images for Nondestructive Testing》论文链接:https://link.springer.com/article/10.1007/s10921-015-0315-7 Github链接: https:…

JavaScript小本本|JavaScript 对象方法定义的演变

在微信中阅读,欢迎关注公众号:CodeFit。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 欢迎订阅《Vue 3.x 必修课|2024》:htt…

JAVA项目基于SpringBoot的外卖点餐管理系统

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着生活节…

C++20中的模块

大多数C项目使用多个翻译单元(translation units),因此它们需要在这些单元之间共享声明和定义(share declarations and definitions)。headers的使用在这方面非常突出。模块(module)是一种language feature,用于在翻译单元之间共享声明和定义。它们是某些…

追问试面试系列:Dubbo

欢迎来到Dubbo系列,在面试中被问到Dubbo相关的问题时,大部分都是简历上写了Dubbo,或者面试官想尝试问问你对Dubbo是否了解。 本系列主要是针对面试官通过一个点就使劲儿往下问的情况。 面试官:说说你们项目亮点 好的面试官 我们这个项目的技术亮点在于采用了Spring Cloud…

正点原子imx6ull-mini-Linux驱动之Linux I2C 驱动实验(21)

I2C 是很常用的一个串行通信接口,用于连接各种外设、传感器等器件,在裸机篇已经对 I.MX6U 的 I2C 接口做了详细的讲解。本章我们来学习一下如何在 Linux 下开发 I2C 接口器件 驱动,重点是学习 Linux 下的 I2C 驱动框架,按照指定的…

人工智能深度学习系列—探索Jaccard相似度损失:图像分割领域的新利器

文章目录 1. 背景介绍2. Loss计算公式3. 使用场景4. 代码样例5. 总结 1. 背景介绍 在深度学习的各种应用中,图像分割是一项极具挑战性的任务。Jaccard相似度损失(Jaccard Similarity Loss),又称为IoU损失(Intersectio…

计算机基本理论与程序运行原理概述

目录 计算机的基本表示方法 计算机的组成 程序运行的原理 指令执行的流水线 编译原理 个人理解 面试题总结 计算机的基本表示方法 计算机系统使用高、低电平来表示逻辑1和0。数据在计算机中的存储、传输和处理均以二进制形式进行。数据通过总线作为电信号进行传输&…

Es6常用的一些数组处理方法

在平时的开发中,我们很多时候用到数组结构数据,那么如何高效处理数组是可以提高开发效率的,现在越来越多人使用es6,那么它的很多方法简化了我们对数据的操作,比如以前数组循环用for循环写比较多的代码,现在…

HTML-07.表格标签

一、要制作的表格如下 二、代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>表格标签<…

探索数据结构:二叉搜索树的递归与非递归实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 二叉搜索树的介绍 二插入搜索树&#xff08;Binary Search Tree&…

第16课 Scratch入门篇:师生问候-广播版

师生问候-广播版 故事背景&#xff1a; 上节课我们完成了师生问候功能&#xff0c;指令罗列的蛮多&#xff0c;写起来很麻烦&#xff0c;而且阅读起来不容易理解&#xff0c;这节课我们把上节课内容进行优化&#xff0c;引入一个新的指令-广播&#xff0c;广播相当于一个事件的…