我想重命名格式为
的几个文件libabc-x86_64-gnu-linux.a
libasdfgh-x86-gnu-linux.a
所有格式
libabc.a
libasdfgh.a
使用Bash。我写了正则表达式(libpj[^-]*).*
,它应该将有趣的部分留在捕获组1中。所以我尝试使用Bash参数替换:
for i in `ls *.a`; do mv "$i" "${i/(lib[^-]*).*/\1}"; done
但是Bash提供了许多形式的错误
mv: 'libabc-x86_64-gnu-linux.a' and 'libabc-x86_64-gnu-linux.a' are the same file
暗示正则表达式在某种程度上不匹配,即使我已经确认它与多个实用程序一起使用,尤其是非常优秀的RegExr。我究竟做错了什么? Bash对捕获组有困难吗?
答案 0 :(得分:4)
您可以使用:
for i in *.a; do
mv "$i" "${i%%-*}.a"
done
%%
将删除匹配的后缀模式;在这种情况下,它会删除-*
或从第一个-
开始的所有内容。