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
如何使用“cmp”来比较两个二进制文件,并find它们不同的所有字节偏移量?
如何将默认的bash / zsh模式设置为vi命令模式而不是vi插入模式?
什么是mkdir中的详细选项?
尝试在2个分隔符之间获取string
redirect由可执行文件创build的文件中的所有内容?
Shell命令以目录模式查找文件
使用perl rename (有时称为prename )实用程序:
rename 's|ada/rda/([^/]*)/([^_]*).*|ada/rda/ada-$1-$2.md|' ada/rda/*/*
(注意:默认情况下,一些发行版在util-linux软件包中安装了rename命令,这个命令是不兼容的 ,如果你有这样一个发行版,请查看perl版本是否可用。
怎么运行的
rename需要一个perl命令作为参数。 这里的参数由一个替代命令组成。 该文件的新名称可以通过将substitute命令应用于旧名称来找到。 这使我们不仅可以给文件一个新的名字,而且还可以像上面那样创建一个新的目录。
更详细地说,替代命令看起来像s|old|new| 。 在我们的例子中, old是ada/rda/([^/]*)/([^_]*).* 。 这将捕获组1中的数字和组2中的文件名(第一个_之前的部分)的开头。 new部分是ada/rda/ada-$1-$2.md 这将使用两个捕获的组创建新的文件名。
您可以使用basename和dirname函数来重建新的文件名:
get_new_name() { oldname=$1 prefix=$(basename $oldname _freeSurface.md) dname=$(dirname $oldname) basedir=$(dirname $dname) dname=$(basename $dname) echo "$basedir/ada-$dname-$prefix.md" }
例如get_new_name("ada/rda/0.05/alpha1_freeSurface.md")将在控制台中显示ada/rda/ada-0.05-alpha1.md 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。