如何将部分文件mv成无后缀形式?

我要将一个mudlib转换编码从gbk转换为utf8,我可以把*.c*.h等带后缀的文件转换后更名为*.c.bak*.h.bak保存,然后:
find . -type f -name "*.c" | xargs -I {} sh -c "mv {}.bak {}"
就可以保存。

问题是有一些文本文件文件名没有后缀,我要怎么写才可以把这类xxx.bak的文件重新命名为xxx? 我试过:
find . -type f -not -name "*.c" | xargs -I {} sh -c "mv {}.bak {}"
因为现在还没有碰到名字为xxx.bak.bak像这样的文件,所以还能用。有没有好的什么方法可以解决这样的问题?

回复
阅读 2.2k
1 个回答

在find里面增加一个条件 -and -not -name "*.bak".
find . -type f -not -name "*.c" -and -not -name "*.h" -and -not -name "*.bak" | xargs -I {} sh -c "mv {}.bak {}".

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏