加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash Shell awk / xargs魔术

发布时间:2020-12-15 21:30:48 所属栏目:安全 来源:网络整理
导读:我正在努力学习一点awk foo.我有一个CSV,其中每一行的格式为partial_file_name,file_path.我的目标是找到文件(基于部分名称)并将它们移动到各自的新路径.我想结合find,awk和mv的力量来实现这个目标但是我坚持实施.我想使用awk将术语与csv文件分开,以便我可以
我正在努力学习一点awk foo.我有一个CSV,其中每一行的格式为partial_file_name,file_path.我的目标是找到文件(基于部分名称)并将它们移动到各自的新路径.我想结合find,awk和mv的力量来实现这个目标但是我坚持实施.我想使用awk将术语与csv文件分开,以便我可以做类似的事情
找 . -name’* $1 *’ – print | xargs mv {} $2 {}
其中$1和$2是csv文件中的拆分术语.有人有主意吗? -和平

解决方法

我觉得你在这里搞得很混乱. {}只能在find中使用,并且只能用于一次.即你不能做像找-name’* .jpg’-exec mv {} {} .png这样的事情.

做这个:

$cat korv
foo.txt,/hello/
bar.jpg,/mullo/
$awk -F,'{print $1 " " $2}' korv
foo.txt /hello/
bar.jpg /mullo/

-F设置分隔符,因此上面将使用“,”分割.接下来,将*添加到文件名:

$awk -F,'{print "*"$1"*" " " $2}' korv
*foo.txt* /hello/
*bar.jpg* /mullo/
**

这表明我有一条空行.我们不希望这个匹配,所以我们添加一个规则:

$awk -F,'/[a-z]/{print "*"$1"*" " " $2}' korv
*foo.txt* /hello/
*bar.jpg* /mullo/

看起来不错,所以使用子shell将所有这些封装到mv:

$mv $(awk -F,'/[a-z]/{print "*"$1"*" " " $2}' korv)
$

完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读