批量处理(批量查找)的简单应用--xargs、exec、grep

本文介绍了xargs和exec命令在Linux系统中的应用技巧,包括如何处理包含空格的文件名、如何结合find命令进行文件操作,以及xargs与exec的区别。通过实际案例展示了这两种命令的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xargs、exec

xargs

find ./ -name ‘*.log’ | xargs rm

文件名中有空格的处理
1. 常用find的-print0选项使用\0来分隔而不是\n分隔,再通过xargs -0来配对保证one space.log的整体性。因为-print0后one space.log的前后各有一个\0,但是文件名中间没有。

find -name “* *.log” -print0 | xargs -0 rm -rf

  1. xargs上处理,只要通过配合-i选项,就能宣告它的整体性
    如果不使用-i,则默认是将分割后处理后的结果整体传递到命令的最尾部。但是有时候需要传递到多个位置,不使用-i就不知道传递到哪个位置了,例如重命名备份的时候在每个传递过来的文件名加上后缀.bak,这需要两个参数位。
    使用xargs -i时以大括号{}作为替换符号,传递的时候看到{}就将被结果替换。可以将{}放在任意需要传递的参数位上,如果多个地方使用{}就实现了多个传递。

find ./ -name ‘*.log’ | xargs -i rm ‘{}’ (引号可以不加)

exec

find ./ -name ‘*.log’ -exec ls -l {} \;

-exec command:command 为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。

这里写图片描述
(-perm可以选择权限,-user可是选择用户,-group可以选择用户组等 )

{ }代表的是「由 find 找到的内容」,如上图所示,找到的结果会被放置到 { } 位置中;

-exec一直到 \; 是关键字,代表找到额外动作的开始(-exec)到结束(\),在这中间的就是找到指令内的额外动作;

因为「;」在bash的环境下是有特殊意义的,因此利用反斜线来跳脱。

exec && xargs

-exec
1.参数是一个一个传递的,传递一个参数执行一次rm
2.文件名有空格等特殊字符也能处理
-xargs
1.一次将参数传给命令,可以使用-n控制参数个数
2.处理特殊文件名需要采用如下方式:
find . -name “*.txt” print0 |xargs -0 rm {}

以下效果一样:(grep后均可跟-l -n等选项)

find ./ -name ‘*.log’ -exec grep ‘aaaa’ {} \;
find ./ -name ‘*.log’ -print0 | xargs -0 grep ‘aaaa’./a.log
find ./ -name ‘*.log’ | xargs -i grep ‘aaaa’ {}

grep

在当前目录搜索带’energywise’行的文件

grep ‘energywise’ *

在当前目录及其子目录下搜索’energywise’行的文件

grep -r ‘energywise’ *

在当前目录及其子目录下搜索’energywise’行的文件,但是不显示匹配的行,只显示匹配的文件

grep -l -r‘energywise’ *

指定别的文件夹

grep -n ‘one’ /home/vagrant/test_xargs/*

详细参见:
关于 ‘–exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)
find -exec 与xargs 区别
xargs的原理剖析及用法详解
linux grep命令详解
管道命令和xargs的区别(经典解释)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值