微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 用于重命名和重新排列文件的脚本shell

我想重新排列和重命名文件.
我有这种文件树结构:

ada/rda/0.05/alpha1_freeSurface.md
ada/rda/0.05/p_freeSurface.md
ada/rda/0.05/U_freeSurface.md
ada/rda/0.1/alpha1_freeSurface.md
ada/rda/0.1/p_freeSurface.md
ada/rda/0.1/U_freeSurface.md

我想要重命名和重新排列文件,如下面的结构:

ada/rda/ada-0.05-alpha1.md
ada/rda/ada-0.05-p.md
ada/rda/ada-0.05-U.md
ada/rda/ada-0.1-alpha1.md
ada/rda/ada-0.1-p.md
ada/rda/ada-0.1-U.md

解决方法:

使用perl重命名(有时称为prename)实用程序:

rename  's|ada/rda/([^/]*)/([^_]*).*|ada/rda/ada-$1-$2.md|' ada/rda/*/*

(注意:认情况下,某些发行版会从util-linux软件包安装一个rename命令.此命令不兼容.如果您有这样的发行版,请查看perl版本是否在名称prename下可用.)

这个怎么运作

rename将perl命令作为参数.这里的参数由一个替换命令组成.通过将substitute命令应用于旧名称,可以找到该文件的新名称.这使我们不仅可以为文件指定新名称,还可以为上面的新目录.

更详细地说,substitute命令看起来像s | old | new |.在我们的例子中,旧的是ada / rda /([^/]*)/([^_]*).*.这将捕获组2中的数字和组2中文件名的开头(第一个_之前的部分).新部分是ada / rda / ada- $1- $2.md.这将使用两个捕获的组创建新文件名.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐