Linux中xargs命令的使用方法
2021/6/2 7:23:51
本文主要是介绍Linux中xargs命令的使用方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 背景
xargs可以高效对文件批量处理:
- 比如你要在不同的文件夹下创建同一个文件
- 比如你想根据某个查询条件, 批量删除符合条件的文件
- 比如你想对不同文件夹中的文件进行更新
笨笨的方法, 是一个一个的进行复制, 比如
cd xxx
;ls
;cp xxx yyy
;cd ../
; 其实,xargs
可以非常优雅的进行批量的操作. 下面用几个例子, 演示一下xargs的用法. 一个坑就是使用echo和ls的问题, 这里进行了测试.
2. 创建文件
创建6个文件夹y1 ~ y6, 创建一个文件: hello_world.txt
(base) [dengfei@localhost xargs]$ mkdir y1 y2 y3 y4 y5 y6 (base) [dengfei@localhost xargs]$ cat >hello_world.txt hello world 我是邓飞 公众号为:育种数据分析之放飞自我 没错, 这样打广告是最棒的
使用tree
查看目录结构:
(base) [dengfei@localhost xargs]$ tree . ├── hello_world.txt ├── y1 ├── y2 ├── y3 ├── y4 ├── y5 └── y6 6 directories, 1 file
3. 将hello_world.txt批量copy到六个文件夹中
命令:
- 这里使用
ls -d
仅仅打印文件夹名称, 而不打印文件夹里面的内容 xargs -i
是定义对象的位置, 匹配的是{}
, 它会将前面的对象, 放到{}
的位置
ls -d y*|xargs -i cp hello_world.txt {}
效果:
(base) [dengfei@localhost xargs]$ tree . ├── hello_world.txt ├── y1 │ └── hello_world.txt ├── y2 │ └── hello_world.txt ├── y3 │ └── hello_world.txt ├── y4 │ └── hello_world.txt ├── y5 │ └── hello_world.txt └── y6 └── hello_world.txt 6 directories, 7 files
搞定
**坑1: **
使用ls y*
, 而不是ls -d y*
, 达不到理想的效果:
(base) [dengfei@localhost xargs]$ tree . ├── hello_world.txt ├── y1 ├── y1: ├── y2 ├── y2: ├── y3 ├── y3: ├── y4 ├── y4: ├── y5 ├── y5: ├── y6 └── y6: 6 directories, 7 files (base) [dengfei@localhost xargs]$ ls hello_world.txt y1 y1: y2 y2: y3 y3: y4 y4: y5 y5: y6 y6:
这是因为:
(base) [dengfei@localhost xargs]$ ls y* |xargs y1: y2: y3: y4: y5: y6:
坑2:echo
比ls要好, 比如:
(base) [dengfei@localhost xargs]$ echo y* |xargs y1 y2 y3 y4 y5 y6
显示没问题, 但是用到xargs中报错, 因为echo会打印的是字符串.
(base) [dengfei@localhost xargs]$ echo y* |xargs -i cp hello_world.txt {} (base) [dengfei@localhost xargs]$ tree . ├── hello_world.txt ├── y1 ├── y1\ y2\ y3\ y4\ y5\ y6 ├── y2 ├── y3 ├── y4 ├── y5 └── y6 6 directories, 2 files (base) [dengfei@localhost xargs]$ ls hello_world.txt y1 y1 y2 y3 y4 y5 y6 y2 y3 y4 y5 y6
4. 爬坑
使用两步法, 第一步将echo的对象, 进行分割, 一个对象一行, 使用xargs -n1
(base) [dengfei@localhost xargs]$ echo y* |xargs -n1 y1 y2 y3 y4 y5 y6
然后再用一次xargs -i
即可成功.
完整命令:
echo y* |xargs -n1|xargs -i cp hello_world.txt {}
效果:
(base) [dengfei@localhost xargs]$ tree . ├── hello_world.txt ├── y1 │ └── hello_world.txt ├── y2 │ └── hello_world.txt ├── y3 │ └── hello_world.txt ├── y4 │ └── hello_world.txt ├── y5 │ └── hello_world.txt └── y6 └── hello_world.txt 6 directories, 7 files
这样就消除了是用echo报错的问题. 而且逻辑更加清楚.
这篇关于Linux中xargs命令的使用方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南