当前位置: 首页 > news >正文

Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件

code review!

文章目录

    • 1.Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件
    • 2.将指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件移动到另一个目录
    • 3.xargs:用于从标准输入中读取数据,并将其作为参数传递给指定的命令
    • 4.xargs和awk区别

1.Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件

这段代码是使用C++语言编写的,它执行了一系列命令来删除指定目录下的旧文件。让我逐行解释代码的功能:

  1. 首先,声明并初始化了一个名为cmdstd::string变量,用于存储要执行的命令。命令的内容是一个字符串,它由多个子命令以管道符(|)连接而成。

    std::string cmd = "ls -t "+ pack_path + "/*.pack | tail -n +2 | xargs rm";
    ```- `ls -t`:这个子命令是用于列出指定目录下的文件和目录,并按照修改时间的倒序排列。
    - `pack_path`:这是一个变量,用于指定目录的路径。它将被拼接到命令中的`/*.pack`之前,表示要列出以`.pack`为扩展名的文件。
    - `/*.pack`:这个子命令是用于匹配指定目录下以`.pack`为扩展名的文件。
    - `tail -n +2`:这个子命令是用于从输入中提取第2行及其之后的内容。在这里的作用是跳过第一行的文件(即最新修改的文件)。
    - `xargs rm`:这个子命令是用于将前面的输出作为参数传递给`rm`命令,从而删除相应的文件。
  2. 接下来,使用system函数执行存储在cmd变量中的命令。

    system(cmd.c_str());
    `````cmd.c_str()`将`cmd`变量转换为C风格的字符串,然后`system`函数将该字符串作为参数传递给操作系统来执行对应的命令。

综上所述,这段代码的作用是列出指定目录下以.pack为扩展名的文件,根据修改时间的倒序排列,然后删除除最新修改的文件之外的所有文件。

2.将指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件移动到另一个目录

这段代码是使用C++语言编写的,它执行了一系列命令来移动指定目录下的旧文件到另一个目录。让我逐行解释代码的功能:

  1. 首先,声明并初始化了一个名为cmdstd::string变量,用于存储要执行的命令。命令的内容是一个字符串,它由多个子命令以管道符(|)连接而成。

    std::string cmd = "ls -t "+ pack_path + "/*.pack | tail -n +2 | xargs -I{} mv {} " + new_pack_path;
    ```- `ls -t`:这个子命令是用于列出指定目录下的文件和目录,并按照修改时间的倒序排列。
    - `pack_path`:这是一个变量,用于指定目录的路径。它将被拼接到命令中的`/*.pack`之前,表示要列出以 `.pack` 为扩展名的文件。
    - `/*.pack`:这个子命令是用于匹配指定目录下以 `.pack` 为扩展名的文件。
    - `tail -n +2`:这个子命令是用于从输入中提取第2行及其之后的内容。在这里的作用是跳过第一行的文件(即最新修改的文件)。
    - `xargs -I{}`:这个子命令是用于将前面的输出作为参数传递给`mv`命令,并使用`{}`作为占位符,将每个文件名依次替换到`{}`的位置。
    - `mv {}`:这个子命令是用于移动文件,`{}`将被实际的文件名替换。
    - `new_pack_path`:这是一个变量,用于指定目标目录的路径。它将被拼接到命令的末尾,表示要将文件移动到这个目录。
  2. 接下来,使用system函数执行存储在cmd变量中的命令。

    system(cmd.c_str());
    `````cmd.c_str()`将`cmd`变量转换为C风格的字符串,然后`system`函数将该字符串作为参数传递给操作系统来执行对应的命令。

综上所述,这段代码的作用是列出指定目录下以.pack为扩展名的文件,根据修改时间的倒序排列,然后将除最新修改的文件之外的所有文件移动到另一个目录。

3.xargs:用于从标准输入中读取数据,并将其作为参数传递给指定的命令

xargs是一个命令行工具,用于从标准输入中读取数据,并将其作为参数传递给指定的命令。它可以将输入数据分割为单个参数,并将这些参数传递给命令进行处理。让我们详细解释xargs的用法和功能。

基本语法:

xargs [选项] [命令]

常用选项:

  • -I{替换字符串}:指定一个占位符,用于替换输入中的每个参数。通常使用{}作为占位符,可以在命令中多次出现以表示不同的参数位置。
  • -n 数字:指定每次执行命令时传递的参数个数。默认情况下,xargs将尽可能多地传递参数,但可以使用-n选项限制每次传递的参数个数。
  • -t:显示要执行的命令,但不实际执行。
  • -p:在执行每个命令之前提示用户确认。

使用示例:

  1. 基本用法:将输入作为命令参数传递。

    echo "file1 file2 file3" | xargs rm
    ```
    上述命令将字符串`file1 file2 file3`通过管道传递给`xargs`,然后`xargs`将其作为参数传递给`rm`命令,相当于执行了`rm file1 file2 file3`。
  2. 通过-I选项替换占位符:

    echo "file1 file2 file3" | xargs -I{} mv {} dest/
    ```
    上述命令将字符串`file1 file2 file3`通过管道传递给`xargs`,然后`xargs`使用`-I{}`选项将每个参数替换为`{}`占位符,并将其作为参数传递给`mv`命令,相当于执行了`mv file1 dest/`、`mv file2 dest/`和`mv file3 dest/`。
  3. 限制每次传递的参数个数:

    echo "file1 file2 file3 file4 file5" | xargs -n 2 rm
    ```
    上述命令将字符串`file1 file2 file3 file4 file5`通过管道传递给`xargs`,然后`xargs`使用`-n 2`选项,每次将两个参数传递给`rm`命令,相当于执行了`rm file1 file2`和`rm file3 file4`,最后一个参数`file5`单独执行了一次`rm`命令。
  4. 从文件中读取参数:

    cat filelist.txt | xargs rm
    ```
    上述命令将文件`filelist.txt`的内容通过管道传递给`xargs`,然后`xargs`将每一行作为参数传递给`rm`命令,实现批量删除文件的功能。

这些只是xargs命令的一些常见用法,它还有其他选项和功能可以根据需要进行调整和使用。请注意,当使用xargs时,请确保输入的参数不包含特殊字符或空格,以避免意外行为。

4.xargs和awk区别

xargsawk是两个不同的命令行工具,它们在处理输入数据和执行操作时有一些区别。

  1. 功能:

    • xargs:主要用于从标准输入中读取数据,并将其作为参数传递给指定的命令。它可以将输入数据分割为单个参数,并将这些参数传递给命令进行处理。xargs通常用于处理文件列表、批量执行命令等场景。
    • awk:是一种强大的文本处理工具,用于从输入文本中提取和处理数据。它基于行进行操作,并可以根据指定的规则和模式进行数据匹配、转换和输出。awk通常用于处理结构化文本数据、数据分析和报告生成等任务。
  2. 数据处理:

    • xargs:将输入数据作为参数传递给命令,每个参数通常是以空格或换行符分隔的文本。xargs可以根据需要对输入进行分割和重组,然后将其传递给命令进行处理。
    • awk:以行为单位处理输入数据,可以根据指定的字段分隔符对每一行进行分割,并对每个字段进行操作。awk提供了丰富的内置函数和操作符,可以进行数据过滤、转换、计算和格式化等操作。
  3. 使用场景:

    • xargs:适用于需要将输入数据作为参数传递给命令进行处理的场景,如批量执行命令、删除文件、移动文件等。
    • awk:适用于需要对结构化文本数据进行处理和分析的场景,如数据提取、数据转换、数据筛选、报告生成等。

总结而言,xargs主要用于处理命令行参数,将输入数据作为参数传递给命令执行,而awk主要用于处理文本数据,对每一行进行分割和操作。它们在功能和使用场景上有所不同,可以根据具体需求选择合适的工具。

相关文章:

Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件

code review! 文章目录 1.Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件2.将指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件移动到另一个目录3.xargs:用于从标准输入中读取数据,并将其作为参数传递给指定…...

什么是呼叫中心的语音通道?呼叫中心语音线路有几种?

什么是呼叫中心的语音通道? 呼叫中心的语音通道是指在呼叫中心中使用的语音信号传输通道,它是呼叫中心中至关重要的一部分,负责将客户的语音信息传递给客服代表,以及将客服代表的语音信息传递给客户。在呼叫中心的运营中&#xf…...

3D点云:平面模型上提取凸(凹)多边形方法

目录 一、实现原理 二、实现代码 三、运行结果 一、实现原理 首先要在点云中提取出潜在平面,对原始点云数据进行滤波,根据提取出的平面模型系数从滤波后的点云进行投影,然后根据投影后的点云计算其对应的二维凹(凸)多边形。 二、实现代码 #in...

论文笔记--A Fine-grained Interpretability Evaluation Benchmark for Neural NLP

论文笔记--A Fine-grained Interpretability Evaluation Benchmark for Neural NLP 1. 文章简介2. 文章概括3 文章重点技术3.1 数据收集3.2 数据扰动3.3 迭代标注和检查根因3.4 度量3.4.1 Token F1-score3.4.2 MAP(Mean Average Precision) 4. 文章亮点5. 原文传送门 1. 文章简…...

NFC和蓝牙在物联网中有什么意义?如何选择?

#NFC物联网# #蓝牙物联网# 在物联网中,NFC和蓝牙有什么意义? NFC在物联网中代表近场通信技术。它是一种短距离、高频的无线通信技术,可以在近距离内实现设备间的数据传输和识别。NFC技术主要用于移动支付、电子票务、门禁、移动身份识别、防…...

代码随想录二刷 |二叉树 | 二叉树的最小深度

代码随想录二刷 |二叉树 | 二叉树的最小深度 题目描述解题思路代码实现 题目描述 111.二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子…...

云上守沪 | 云轴科技ZStack成功实践精选(上海)

为打造国际数字之都,上海发布数字经济发展“十四五”规划,围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域,加强数据、技术、企业、空间载体等关键要素协同联动,加快进行数字经济发展布局;加快基础软件…...

2023 IoTDB 用户大会成功举办,深入洞察工业互联网数据价值

2023 年 12 月 3 日,中国通信学会作为指导单位,Apache IoTDB Community、清华大学软件学院、中国通信学会开源技术委员会联合主办,“科创中国”开源产业科技服务团和天谋科技(北京)有限公司承办的 2023 IoTDB 用户大会…...

cache教程 3.HTTP服务器

上一节我们实现了单机版的缓存服务,但是我们的目标是分布式缓存。那么,我们就需要把缓存服务部署到多态机器节点上,对外提供访问接口。客户端就可以通过这些接口去实现缓存的增删改查。 分布式缓存需要实现节点间通信,而通信方法…...

redis应用-分布式锁

目录 什么是分布式锁 分布式锁的基本实现 引入过期时间 引入校验id 引入lua 引入看门狗 引入redlock算法 什么是分布式锁 在一个分布式系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于"线程安全"的问题. 而…...

51单片机程序

利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器O以500MS速度进行流水灯从土至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后&#xff…...

Android 分享小结

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、微信 分享 三、 QQ 、QQ空间(Qz…...

Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置

一、依赖安装 sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk pip2 install pandas jinja2 pyserial cerberus pyulog0.7.0 n…...

JVM 命令行监控及诊断工具

面试题 你使用过Java虚拟机性能监控和故障处理工具吗?(美图) 怎么打出线程栈信息。(字节跳动) JVM诊断调优工具用过哪些? (京东) 怎么获取 Java 程序使用的内存?堆使用…...

飞天使-linux操作的一些技巧与知识点2

TCP 的三次握手 第一次,客户端与服务端建立链接,需要发送请求连接的消息 第二次,服务端接口到数据后,返回一个确认的操作*(至此客户端和服务端链路建立成功) 第三次,服务端还需要发送要与客户端…...

Android : 篮球记分器app _简单应用

示例图: 1.导包 在build.gradle 中 加入 // 使用androidx版本库implementation androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03 2. 开启dataBinding android{...// 步骤1.开启data bindingdataBinding {enabled true}...} 3.写个类继承 ViewModel pac…...

音视频之旅 - 基础知识

图像基础知识 像素 像素是图像的基本单元,一个个像素就组成了图像。你可以认为像素就是图像中的一个点。在下面这张图中,你可以看到一个个方块,这些方块就是像素 分辨率 图像(或视频)的分辨率是指图像的大小或尺寸。…...

分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测

分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测 目录 分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类…...

如何使用 Zotero 导出所选条目的 PDF 文件

如何使用 Zotero 导出所选条目的 PDF 文件 Zotero 是一款强大的参考文献管理工具,但它并不直接提供将整个文件夹导出为 PDF 的选项。不过,您可以使用以下步骤来导出您所选的 Zotero 条目中的 PDF 文件,无需额外的插件。 选择所需的 Zotero 条…...

minio的k8s的单机部署

minio的k8s的单机部署 apiVersion: apps/v1 kind: Deployment metadata:name: minionamespace: itshare spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioimage: minio/minio:RELEASE.2022-10-15T19-57-03Z…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...