2.7 xargs和exec详解【转】
本文转载自:http://ask.apelearn.com/question/13323
常用在查找中exec主要是和find一起配合使用,而xargs就要比exec用的地方要多了。
exec 应用
使用find命令时,经常使用一个选项就是这个-exec了,比如,查找当前目录创建时间大于10天的文件并删除:
# find . -mtime +10 -exec rm -rf {} \;这个命令中也是把{}作为前面find出来的文件的替代符,后面的 \ 为 ; 的脱意符,不然shell会把分号作为该行命令的结尾。这个-exec有时候也挺实用的,它同样可以实现刚刚上面批量更改文件名的需求:
[root@localhost test]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak 5.txt_bak
[root@localhost test]# find ./*_bak -exec mv {} {}_bak \;
[root@localhost test]# ls
1.txt_bak_bak 2.txt_bak_bak 3.txt_bak_bak 4.txt_bak_bak 5.txt_bak_bak
# find ./*_bak 查找文件 -exec mv {} {}_bak \; 将其重命名( -exec有并且的意思但是有不完全一样,因为这里是一条命令)
xargs应用
它的作用就是把管道符前面的输出作为xargs后面的命令的输入。它的好处在于可以把本来两步或者多步才能完成的任务简单一步就能完成。
[root@localhost ~]# echo "121212121212" > 123.txt
[root@localhost ~]# ls 123.txt | xargs cat
121212121212
xargs常常和find命令一起使用,比如,查找当前目录创建时间大于10天的文件,然后再删除。
[root@localhost ~]# find . -mtime +10 |xargs rm
这种应用是最为常见的,xargs后面的rm 也可以加选项,当是目录时,就需要-r选项了。
xargs的这个功能不叫什么,它的另一个功能才叫神奇。
例如:
现在我有一个这样的需求,查找当前目录下所有.txt的文件,然后把这些.txt的文件变成.txt_bak。正常情况下,我们不得不写脚本去实现,但是使用xargs就一步。
[root@localhost ~]# mkdir test
[root@localhost ~]# cd test
[root@localhost test]# touch 1.txt 2.txt 3.txt 4.txt 5.txt
[root@localhost test]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
[root@localhost test]# ls *.txt |xargs -n1 -i{} mv {} {}_bak
[root@localhost test]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak 5.txt_bak
xargs -n1 –i{} 类似for循环,
-n1意思是一个一个对象的去处理,
-i{}把前面的对象使用{}取代,
mv {} {}_bak 相当于 mv 1.txt 1.txt_bak。
你刚开始接触这个命令时也许有点难以理解,多练习一下你就会熟悉了,
记住这个应用,很实用。
也可以这样
# ls *.txt |xargs -n1 -i{} cp {} {}_bak
2.7 xargs和exec详解【转】的更多相关文章
- xargs与exec详解
一.场景 这个命令是错误的 1 find ./ -perm +700 |ls -l 这样才是正确的 1 find ./ -perm +700 |xargs ls -l 二.用法 1 2 3 4 5 ...
- linux shell脚本学习xargs命令使用详解
作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处 ...
- xargs -i参数详解
学习所需,文章转载过来! xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xa ...
- Java魔法堂:找外援的利器——Runtime.exec详解
一.前言 Java虽然五脏俱全但总有软肋,譬如获取CPU等硬件信息,当然我们可以通过JNI调用C/C++来获取,但对于对C/C++和Windows API不熟的码农是一系列复杂的学习和踩坑过程.那能不 ...
- linux下xargs命令用法详解 【转】
转自:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...
- linux下xargs命令用法详解
原文:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...
- 转 linux下xargs命令用法详解
xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤 ...
- (十四)docker exec 详解
1. 作用 在运行的容器中执行命令 2. 语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明: -d :分离模式: 在后台运行 ...
- exec命令详解
基础命令学习目录首页 原文链接: exec: 在bash下输入man exec,找到exec命令解释处,可以看到有”No new process is created.”这样的解释,这就是说exec命 ...
随机推荐
- 单机安装hadoop集群
一 .安装前准备 1.VMware虚拟内容 2.Linux系统 (CentOS-6.9-min) 镜像文件http://vault.centos.org/ 3.jdk 1.8 rpm或bin文件 ht ...
- 省市区名称code
https://blog.csdn.net/hichinamobile/article/details/51725090 --省 create table t_base_provinces( id ) ...
- Android View加载圆形图片且同时绘制圆形图片的外部边缘边线及边框:LayerDrawable实现
Android View加载圆形图片且同时绘制圆形图片的外部边缘边线及边框:LayerDrawable实现 LayerDrawable实现的结果和附录文章1,2,3中的layer-list一致. ...
- ERP类系统设计学习
文章:分布式.服务化的ERP系统架构设计 文章的方法是对系统进行拆分,拆分成多个子系统.
- FZU- Problem 1147 Tiling,递推坑题,大数水过~~
Problem 1147 Tiling Time Limit: 1000 mSec Memory Limit : 32768 KB http://acm.fzu.edu.cn/problem.php? ...
- 【ZJOI2017 Round1练习】
喜闻乐见(爆蛋滚粗)的ZJOI模拟赛终于开始了 可以又一次感受被屠的快感 DAY1: T1:线段树打错-70 正解分块听卡常还要调块的大小 T2:数学弱爆 是道结论题 T3:暴力分滚粗 DAY2: T ...
- excludepathpatterns 无效
踩坑了,调了好久才调出来. 原因: 访问的API /XXX 已经转换为 /error 了. 把“/error” 也加入 excludepathpatterns 里面即可.
- Visual Studio 2017 RC的坑
ASP.NET Core Project add Docker Project Support的问题 执行上面操作以后,如果本机没有装好docker,就会一直报错,无法build通过,无论你在Proj ...
- 【小记事】解除端口占用(Windows)
开发中有时会因为端口占用而导致起项目时报错(如下图),这时候只要解除端口占用即可. 解除端口占用: 1.打开cmd(win+r),查看端口占用情况 netstat -ano | findstr 端口号 ...
- dpr——设备像素比(device pixel ratio)
设备像素比 = 物理像素 / 逻辑像素 1.物理像素 显示器上最小的物理显示单元(像素颗粒),在操作系统的调度下,每一个设备像素都有自己的颜色值和亮度值. 例如:手机大小固定,物理像素越高,画面越清晰 ...