幸福一箩筐|如何在Linux上使用xargs命令( 二 )
$ ls one two three将xargs与多个命令一起使用我们可以用-I(初始参数)选项来将 xargs 和多个命令一起使用 。 这一选项定义了替换字符串 。 在命令行中的任何出现替换字符串的位置 , 都会插入我们提供给 xargs 的值。
有点抽象 , 我们以一个实例来进行讲解 。
我们先用 tree 命令查看当前目录中的子目录 。 该 -d(directory)选项使 tree 命令忽略文件 , 只输出目录 。
$ tree -d现在只有一个子目录 images。
在 directories.txt 这个文件中 , 我们有一些想要创建的目录的名称 。 我们先用 cat 查看其中的内容 。
$ cat directories.txt我们把这些内容作为输入数据传给 xargs, 执行以下的命令:
$ cat directories.txt | xargs -I % sh -c 'echo %; mkdir %'这条命令执行了以下操作:
- cat directories.txt :将 directrories.txt 文件的内容(所有要创建的目录名称)传给 xargs 。
- xargs -I % :定义了替换字符串 % 。
- sh -c:启动一个新的子shell 。 -c(commond)让 shell 读取命令 。
- 'echo %; mkdir %':每个%都会被替换为 xargs 传过来的目录名称。echo命令打印目录名称 , mkdir 命令创建目录 。
$ tree -d首先 , 通过管道将两个目录的名称传给 xargs。 并且让 xargs 一次只将其中一个参数传递给正在使用的命令 。
想要调用 cp 两次 , 每次各使用两个目录中的一个作为命令行参数 , 我们可以通过将 xargs 的 -n(max number)选项设置为 1 来实现 。
这里还使用了-v(verbose 详细信息)选项 , 让 cp 反馈正在执行的操作 。
$ echo ~/dir1/ ~/dir2/ | xargs -n 1 cp -v ./*.c我们将文件复制到了两个目录 , 一次复制一个目录 。 cp 反馈了详细信息 , 让我们看到进行了哪些操作 。这里我们以 find 命令为例 。 find 有自己的选项来处理文件名中的空格和特殊字符 , 即 -print0(全名 , 空字符)选项 。
$ find . -name "*.png" -type f -print0 | xargs -0 rm -v -rf "{}"
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 笙笙千离|惠若琪李宇春同框颁奖,春春身高176还自卑,巨人身高收获幸福
- 资讯早知道|9年后再看《步步惊心》,发现若曦无论跟谁都不会幸福
- 弹钢琴|原创吉娜为1岁宠物兔庆生,郎朗弹钢琴助兴,幸福温馨像一家三口
- 人民日报|岳阳君山区:消费扶贫托起贫困户稳稳的幸福
- “全国人大 ”微信公众号|何健忠:以实施民法典提升人民美好生活的“幸福指数”
- 经济日报-中国经济网|【幸福花开新边疆】219国道旁的“脱贫事”
- 新华网|【幸福花开新边疆】奋发学技能 靠己奔小康
- 【幸福花开新边疆】奋发学技能 靠己奔小康
- 【幸福花开新边疆】219国道旁的“脱贫事”
- 岳阳君山区:消费扶贫托起贫困户稳稳的幸福
