awk中调用系统命令批量处理

工作中经常遇到在输入一堆文件名的条件下,将其移动或者删除或者复制。由于输入是个文件名的集合,而不是单个文件,因此不能直接用cp或者mv命令,可以通过awk的逐行处理的功能来处理这种情况。以下是一个例子:

$ grep -r 'TE' * | cut -d " " -f3 | awk '{system("mv "$1" ./English_mlfs/")}'

1. grep,在当前文件夹内的文件中查找含有TE这两个字符的文件。注意,如果系统认为文件是文本文件,就会同时显示文件名和含有TE的那一行,如果认为是binary文件,就会只显示文件名,表示在某个文件中找到了。

2. grep的输出结果是以空格隔开的,其中文件名在第三列,所以用cut来获取文件名列表

3. 在awk中调用bash命令的方法很简单,就使用system()函数,输入为要执行的命令的字符串。$1表示第一列的数据,也就是文件名。


以后可以用awk和调用系统命令的方法来批量处理文件咯!这样就可以省掉很多手工操作,也不用麻烦的去写脚本文件来处理这种简单又经常遇到的任务了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值