linux 中 xargs、cut 以及管道综合应用

来源:互联网 发布:淘宝模版如何制作 编辑:程序博客网 时间:2024/06/06 17:08

熟练掌握 linux 各种命令以及管道的使用,无疑让工作效率大幅增加。笔者在做实验时,免不了各种文件的频繁操作,而且文件数量庞大,若以手工方式处理,效率低下不说,还容易出错。今天,结合一个具体实例场景,来谈谈 linux 中 xargs、cut 以及管道的使用。备忘之,分享之。

1.批量新建文件夹

这里写图片描述
在当前路径下新建两个文件夹,并进入 alltxt 文件夹,批量创建100个文件夹:

cd alltxtmkdir {1..100}

为简便起见,文件夹命名为1至100,如下所示:
这里写图片描述

2.在新建的100个文件夹下批量新建6个文件

ls | xargs -i touch {}/1_1_1.txt ls | xargs -i touch {}/1_1_2.txt ls | xargs -i touch {}/1_1_3.txtls | xargs -i touch {}/1_1_4.txtls | xargs -i touch {}/1_1_5.txt   ls | xargs -i touch {}/1_1_6.txt 

xargs 中的 -i 参数表示将 xargs 的每项名称一项一项赋值给 {}.

随便进入一个文件夹,查看是否创建成功:
这里写图片描述

现在的需求是,在 test 文件目录中创建同样的目录结构,且将 alltxt 中每个目录下的 1_1_3.txt 文件复制到对应文件夹中。

3.进入 test 目录,创建与 alltxt 目录相同的子目录结构

cd test/ls ./../alltxt/ | xargs -i mkdir {}

4.查找并分割出想要的文件

find . -name *_1_3.txt | less

这里写图片描述

find . -name *_1_3.txt | cut -d / -f 2-3 | less

这里写图片描述

cut 中的 -d 参数表示自定义分隔符,默认为制表符;
cut 中的 -f 与 -d 一起使用,指定显示那个区域;

5.将指定文件复制到 test 中对应的文件夹中去

find . -name *_1_3.txt | cut -d / -f 2-3 | xargs -i cp {} ./../test/{}

随便进入 test 中的一个文件夹,查看显示结果:
这里写图片描述

到此,大功告成!

原创粉丝点击