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

xargs的参数及常用命令

1. xargs 命令简介

xargs 是一个非常有用的工具,它用于从标准输入(stdin)构建和执行命令行。xargs 可以将标准输入中以空格或换行符分隔的数据,转化为命令的参数传递给其他命令。

使用场景:

  • 当某些命令不支持使用管道 | 直接传递参数时,xargs 就非常有用。
  • 通过 xargs,你可以构建复杂的单行命令,传递多个参数给其他命令。
简单例子:
cat flags.txt | xargs -n 2
133 89
99 147

xargs 的命令格式和选项说明

2. xargs 命令格式

xargs 的基本格式如下:

xargs [OPTIONS] [COMMAND]
  • OPTIONS:用于控制 xargs 的行为,例如如何处理输入、每次传递的参数数量等。
  • COMMAND:要执行的命令。xargs 会将从标准输入读取的参数传递给这个命令。
例如:
echo "file1 file2 file3" | xargs rm
  • echo “file1 file2 file3”:生成输入字符串 file1 file2 file3
  • xargs rmxargs 将这些文件名传递给 rm 命令,最终执行 rm file1 file2 file3,删除这些文件。

4. xargs 选项详细说明

  • -a, --arg-file=FILE

    • 从指定的文件读取输入内容,而不是从标准输入。
    • 例如,读取 input.txt 文件内容:
      xargs -a input.txt echo
      
  • -d, --delimiter=DEL

    • 指定输入内容的分隔符。默认是空格和换行符,可以使用该选项设置自定义分隔符。
    • 例如,使用逗号作为分隔符:
      echo "apple,banana,pear" | xargs -d ',' echo
      
  • -I REPLACE_STR

    • 每次传递参数时,xargs 将读取的每个参数替换为 REPLACE_STR,然后传递给命令。
    • 例如,复制文件并添加后缀:
      echo "file1 file2" | xargs -I {} cp {} /backup/{}.bak
      

具体解释:

echo "file1.txt file2.txt" | xargs -I {} rm /path/to/{}
  • 解释

    1. echo "file1.txt file2.txt":生成文件列表。
    2. xargs -I {}:使用 {} 作为占位符。
    3. rm /path/to/{}xargs{} 替换为 file1.txtfile2.txt,生成以下两个命令:
      rm /path/to/file1.txt
      rm /path/to/file2.txt
      
    4. 这会删除 /path/to/ 目录下的 file1.txtfile2.txt
  • -n, --max-args=MAX_ARGS

    • 设置每次传递给命令的最大参数个数。例如:
      echo "file1 file2 file3" | xargs -n 2 rm
      
      这将每次传递两个参数,分两次执行:
      rm file1 file2
      rm file3
      
  • -P, --max-procs=MAX_PROCS

    • 设置同时运行的最大进程数。默认情况下,xargs 每次执行一个命令。使用此选项可以并行运行多个命令。
    • 例如,指定最多运行 4 个进程:
      cat commands.txt | xargs -P 4 -n 1 bash -c
      
  • -t, --verbose

    • 在执行命令前,先将命令打印到标准错误输出,便于调试。
    • 例如:
      echo "file1 file2" | xargs -t rm
      在生物信息学中,xargs 命令在处理大批量数据文件或与工具进行批量交互时非常有用。它可以结合其他命令或工具,帮助你高效地处理大量序列文件、比对文件或者其他类型的生物数据文件。以下是几个常见的使用场景:

1. 批量处理 FASTQ 文件
如果你有一组 FASTQ 文件,并希望使用特定工具(如 fastqc)对这些文件进行质量控制分析,xargs 可以帮助你高效地处理所有文件。例如,使用 xargs 批量运行 fastqc 命令:

ls *.fastq | xargs -t -n 1 fastqc
解释:
  • ls *.fastq 列出当前目录中的所有 FASTQ 文件。
  • xargs -t -n 1 fastqc 每次传递一个文件给 fastqc,并打印生成的命令,帮助你检查每个文件是如何处理的。

2. 批量比对 BAM 文件

假设你有多个 BAM 文件,并希望使用 samtools 对这些文件进行操作,比如统计比对信息,xargs 可以帮助你批量运行这些操作。例如:

ls *.bam | xargs -t -n 1 samtools flagstat
解释:
  • ls *.bam 列出当前目录下的所有 BAM 文件。
  • xargs -t -n 1 samtools flagstat 每次将一个 BAM 文件传递给 samtools flagstat 命令,并先打印执行的命令,便于检查。

3. 批量转换文件格式

如果你需要将一组 SAM 文件转换为 BAM 文件,可以使用 xargs 来自动化这个过程。例如:

ls *.sam | xargs -t -I {} samtools view -S -b {} -o {}.bam
解释:
  • ls *.sam 列出当前目录中的所有 SAM 文件。
  • xargs -t -I {}xargs 使用 {} 作为占位符,替换成每个 SAM 文件名。
  • samtools view -S -b {} -o {}.bam:将每个 SAM 文件转换为 BAM 文件,输出文件名为对应的 .bam 文件。

4. 批量文件压缩或解压缩

在生物信息学中,经常会对大文件进行压缩或解压缩操作,比如压缩 FASTQ 文件,可以使用 xargs 来简化这一过程:

ls *.fastq | xargs -t -n 1 gzip

或者解压缩:

ls *.fastq.gz | xargs -t -n 1 gunzip

5. 并行化处理

xargs 也可以通过 -P 选项进行并行处理。例如,如果你有多个 BAM 文件需要并行化处理来加速任务,可以这样使用:

ls *.bam | xargs -t -P 4 -n 1 samtools index
解释:
  • xargs -P 4:并行执行 4 个 samtools index 进程,加快处理速度。

  • -r, --no-run-if-empty

    • 当输入为空时,不执行任何命令。这是 xargs 的默认行为。

5. xargs 的常用示例

(1)处理文件列表并执行命令

当你有大量文件需要操作时,可以使用 xargs 将这些文件名作为参数传递给命令。例如,删除当前目录下所有 .bak 文件:

ls *.sam | xargs rm

这里,xargsls 命令输出的文件列表传递给 rm,一次性删除所有 .sam 文件。

(2)通过 EOF 标识符终止输入

使用 -E 选项设置 EOF(end of file)标识符,xargs 会在读取到指定的标识符时停止处理输入。例如,将输入中逗号作为结束标识符:

echo "file1 file2, file3" | xargs -E ","

输出:

file1 file2

xargs 在读取到逗号 , 后停止处理。

(3)每次执行时限制参数数量

有时候你可能希望每次传递固定数量的参数给命令。你可以使用 -n 选项来限制每次传递的参数数量。例如,每次传递两个参数:

echo "file1 file2 file3 file4" | xargs -n 2 echo

输出:

file1 file2
file3 file4

xargs 将输入拆分为两组,并两次传递给 echo 命令。

(4)设置命令行的最大字符数

有时你可能需要限制命令行的最大字符数,使用 -s 选项可以做到。例如,限制命令行的最大字符数为 11:

echo "file1 file2" | xargs -s 11 echo

输出:

file1
file2

由于 file1 file2 的字符总长度超过了 11 个字符,xargs 将其拆分为两次输出。

(5)并行执行多个进程

使用 -P 选项并行运行多个进程。例如,最多同时运行 4 个 rm 命令来删除文件:

find . -name "*.txt" | xargs -P 4 rm

这里 xargsfind 查找到的 .txt 文件并行传递给 rm,加快了处理速度。

(6)替换字符串

使用 -I 选项,xargs 可以将每个输入参数替换为指定的字符串。例如,将文件名替换为目标路径,并复制文件:

echo "file1 file2" | xargs -I {} cp {} /backup/{}.bak

这里,{} 被替换为 file1file2,生成的命令是:

cp file1 /backup/file1.bak
cp file2 /backup/file2.bak

总结

这些示例展示了 xargs 在处理批量文件、并行执行命令、控制参数数量和处理特殊字符方面的灵活性。xargs 可以大大简化复杂的操作,使你能够高效地构建单行命令。

相关文章:

xargs的参数及常用命令

1. xargs 命令简介 xargs 是一个非常有用的工具,它用于从标准输入(stdin)构建和执行命令行。xargs 可以将标准输入中以空格或换行符分隔的数据,转化为命令的参数传递给其他命令。 使用场景: 当某些命令不支持使用管…...

FLASK 数据库建立以及部署和表的创建

首先安装flask-sqlalchemy db SQLAlchemy(app) 一 Mmeber、User模型类的创建 # coding: utf-8 from app import db, appclass Member(db.Model):__tablename__ memberid db.Column(db.Integer, primary_keyTrue)membername db.Column(db.String(100), uniqueTrue, index…...

微信小程序的面试题

简述下 wx.navigateTo(), wx.redirectTo(), wx.switchTab(), wx.navigateBack(), wx.reLaunch() 区别 ? wx.navigateTo() : 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面 wx.redirectTo() : 关闭当前页面,跳转到应用内的…...

udp c语言实现组播的例子

一、组播与广播的区别 1、组播地址和广播地址是不同的概念 组播地址:用于将数据包发送到一组特定的接收者,只有加入该组播地址的设备才能接收数据。它提高了网络效率,因为发送者只需发送一份数据。 广播地址:用于将数据包发送到…...

ffmpeg面向对象——AVInputFormat与URLProtocol啥关系

《ffmpeg面向对象-rtsp拉流相关对象》和《ffmpeg面向对象——拉流协议匹配机制探索》探索过了输入格式匹配和底层协议匹配,且ffmpeg拉流是先是匹配输入格式——抽象为AVInputFormat类,然后再匹配url协议类——抽象为URLProtocol类。 它们是啥关系&#…...

【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!二叉搜索树 大家好,这里是店小二!今天我们将深入探讨高阶数据结构中的AVL树。AVL树是一种自平衡的二叉搜索树,可以看作是对传统二叉搜索树的优化版本。如果你对数据结…...

中级软考软件设计师真题+模拟题+课件讲解+机考讲解模拟+笔记分享

软考真题分享 下载链接⬇️⬇️: 下载链接...

MySQL—视图

前言: 视图是一个虚拟的表,是基于一个或多个基本表或其他视图的查询结果集。视图本身不占据物理储存空间,仅仅只是一个查询的逻辑表示,物理上依赖于数据表的数据。 视图具有简单,安全,逻辑数据独立&#…...

鸿蒙OS启动流程

启动流程(基于openharmony4.1) 系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动: 内核加载init进程,一般在bootloader启动内核时通过设置内核的cmdline来指定init的位置。init进程启动后,会挂载tmpfs,…...

服务器数据恢复—EMC存储RAID5磁盘阵列数据恢复案例

服务器数据恢复环境: 一台EMC某型号存储设备,该存储中有一组由12块(包括2块热备盘)STAT硬盘组建的raid5阵列。 服务器故障: 该存储在运行过程中突然崩溃,raid瘫痪。数据恢复工程师到达现场对故障存储设备进…...

使用 `netcat`(nc)工具进行TCP数据发送和接收

Netcat(通常缩写为nc)是一个功能强大的网络工具,常被称为“瑞士军刀”的网络工具。它用于在网络上进行各种操作,比如读写网络连接、调试和分析网络服务等。以下是关于Netcat的一些详细介绍: ### 主要功能 1. **TCP/U…...

Linux虚拟化技术嬗变综述

在信息技术飞速发展的今天,虚拟化技术已经成为数据中心、云计算和企业IT基础设施中不可或缺的一部分。Linux操作系统作为开源和灵活的代表,在虚拟化技术的发展中扮演了重要角色。本文将综述Linux虚拟化技术的演变,探讨其优势、应用场景&#…...

.NET 通过C#设置Excel工作表的页面设置

Excel文件数据准备就绪并需要以报告形式呈现时,调整Excel文件的页面设置变得尤为重要,不仅关乎文档的专业外观,还直接影响到打印或电子分享时的可读性和实用性。通过C#来自动化这一过程,不仅可以节省大量手动配置的时间&#xff0…...

Excel日期导入数据库变为数字怎么办

在Excel导入到数据库的过程中,经常会碰到Excel里面的日期数据,导进去过后变成了数字。 如下图: 使用navicate等数据库编辑器导入数据库后: 原因分析:这是因为日期和时间在excel中都是以数字形式存储的,这个…...

SSL---SSL certificate problem

0 Preface/Foreword 0.1 SSL certificate problem 开发过程中,gitlab-runner连接gitlab时候出现SSL 证书问题。 场景:公司的gitlab runner服务器引入了SSL证书,每年都会主动更新一次。当前的gitlab-runner运行在PC机器上,但是g…...

linux tar 打包文件去掉文件所在路径

一、准备目录 /root/tmp/images /root/tmp/images2 执行命令打包目录/root/tmp/images 到 /root/tmp/images.tar.gz 再解压到/root/tmp/images2 cd /root/tmp/images && tar -cvzf images.tar.gz * && mv images.tar.gz /root/tmp/ tar -C /root/tmp/image…...

MQ快速入门【详细】个人笔记 讲解通俗易懂

1.同步通讯和异步通讯 同步通讯:如果举个例子来说,同步通讯就像是两个人在打电话,一方说的话,能够立马传给另一方,消息的时效性非常高,但是相对的,只能是给一个人通讯,如果这个时候&…...

react实现实时计时的最简方式

js中时间的处理,不借助于moment/dayjs这样的工具库,原生获取格式化的时间,最简单的实现方式可以参考下面这样。 实现效果 代码实现 封装hooks import { useState, useEffect } from "react";export function useCountTime() {c…...

时尚的社会心理机制:求同和树异这对互为矛盾的心理动机,使得人们在社会生活中互相模仿、互相追逐、互相竞争,使得时尚的钟摆永不停息。

文章目录 引言I 时尚时尚的社会心理机制时尚的分类时尚的特点时尚的表现形式II 术语时装周服饰引言 时尚(fad)又称流行,它指在一定时期内社会上或一个群体中普遍流行的,并为大多数所仿效的生活方式或行为模式。 人的心理动机常常是互相矛盾的,既要求同于人,又要求异于人。…...

HarmonyOS NEXT应用开发实战(二、封装比UniApp和小程序更简单好用的网络库)

网络访问接口,使用频次最高。之前习惯了uniapp下的网络接口风格,使用起来贼简单方便。转战到鸿蒙上后,原始网络接口写着真累啊!目标让鸿蒙上网络接口使用,简单程度比肩uniapp,比Axios更轻量级。源码量也不多…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

算术操作符与类型转换:从基础到精通

目录 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符&#xff1a;、-、*、/、% 赋值操作符&#xff1a;和复合赋值 单⽬操作符&#xff1a;、--、、- 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...