【发布时间】:2021-10-29 03:18:03
【问题描述】:
假设我有以下文件:
a_b.txt a_b_c.txt a_b_c_d_e.txt a_b_c_d_e_f_g_h_i.txt
我想以这样一种方式重命名它们,将它们的文件名拆分为_,并保留第一个和最后一个字段,所以我最终得到:
a_b.txt a_c.txt a_e.txt a_i.txt
以为这很容易,但我有点卡住了......
我尝试使用以下正则表达式 rename:
rename 's/^([^_]*).*([^_]*[.]txt)/$1_$2/' *.txt
但我真正需要做的是实际拆分文件名,所以我想到了awk,但我对它不是很精通......这是我到目前为止所拥有的(我知道一些我应该指定FS="_" 并以某种方式获取第一个和最后一个字段...
find . -name "*.txt" | awk -v mvcmd='mv "%s" "%s"\n' '{old=$0; <<split by _ here somehow and retain first and last fields>>; printf mvcmd,old,$0}'
有什么帮助吗?我没有首选的方法,但是用它来学习awk 会很好。谢谢!
【问题讨论】:
-
regex 正在 rename 命令中使用(在 OP 的努力以及答案之一中),恕我直言,没有理由删除 regex 标签,所以现在重新添加它。如果您要删除它,请在 cmets 中注明原因,谢谢。
标签: regex awk split rename file-rename