如何更改文件名中某些字符串的顺序
How can I change the order of some string in a filename
我有很多这样的文件:
tf_CVBV6Z_CVSA1Z_pws2_pcc1.sac
tf_CVBV5Z_CVSA2Z_pws2_pcc1.sac
tf_CVBV4Z_CVSA3Z_pws2_pcc1.sac
tf_CVBV3Z_CVSA4Z_pws2_pcc1.sac
tf_CVBV2Z_CVSA5Z_pws2_pcc1.sac
tf_CVBV1Z_CVSA6Z_pws2_pcc1.sac
我想把顺序改成这样:
tf_CVSA1Z_CVBV6Z_pws2_pcc1.sac
tf_CVSA2Z_CVBV5Z_pws2_pcc1.sac
tf_CVSA3Z_CVBV4Z_pws2_pcc1.sac
tf_CVSA4Z_CVBV3Z_pws2_pcc1.sac
tf_CVSA5Z_CVBV2Z_pws2_pcc1.sac
tf_CVSA6Z_CVBV1Z_pws2_pcc1.sac
我尝试了重命名选项,但它不起作用。
有什么想法吗?
谢谢
用 perl 的重命名:
$ rename -n 's/(CV[^_]+)_(CV[^_]+)/_/' tf_CVSA1Z_CVBV6Z_pws2_pcc1.sac
tf_CVSA1Z_CVBV6Z_pws2_pcc1.sac -> tf_CVBV6Z_CVSA1Z_pws2_pcc1.sac
当输出看起来不错时删除 -n
开关。
有其他同名工具可能无法做到这一点,所以要小心。
如果你运行以下命令(GNU
)
$ file "$(readlink -f "$(type -p rename)")"
并且您的结果包含 Perl script, ASCII text executable
而不包含 ELF
,那么这似乎是正确的工具 =)
如果不是,将其设为 Debian
的默认值(通常已经是这种情况)和 Ubuntu
等衍生产品:
$ sudo update-alternatives --set rename /path/to/rename
将 /path/to/rename
替换为 perl rename
可执行文件的路径。
如果你没有这个命令,搜索你的包管理器来安装它或者do it manually(没有依赖...)
这个工具最初是由 Perl 之父 Larry Wall 编写的。
我有很多这样的文件:
tf_CVBV6Z_CVSA1Z_pws2_pcc1.sac
tf_CVBV5Z_CVSA2Z_pws2_pcc1.sac
tf_CVBV4Z_CVSA3Z_pws2_pcc1.sac
tf_CVBV3Z_CVSA4Z_pws2_pcc1.sac
tf_CVBV2Z_CVSA5Z_pws2_pcc1.sac
tf_CVBV1Z_CVSA6Z_pws2_pcc1.sac
我想把顺序改成这样:
tf_CVSA1Z_CVBV6Z_pws2_pcc1.sac
tf_CVSA2Z_CVBV5Z_pws2_pcc1.sac
tf_CVSA3Z_CVBV4Z_pws2_pcc1.sac
tf_CVSA4Z_CVBV3Z_pws2_pcc1.sac
tf_CVSA5Z_CVBV2Z_pws2_pcc1.sac
tf_CVSA6Z_CVBV1Z_pws2_pcc1.sac
我尝试了重命名选项,但它不起作用。
有什么想法吗?
谢谢
用 perl 的重命名:
$ rename -n 's/(CV[^_]+)_(CV[^_]+)/_/' tf_CVSA1Z_CVBV6Z_pws2_pcc1.sac
tf_CVSA1Z_CVBV6Z_pws2_pcc1.sac -> tf_CVBV6Z_CVSA1Z_pws2_pcc1.sac
当输出看起来不错时删除 -n
开关。
如果你运行以下命令(GNU
)
$ file "$(readlink -f "$(type -p rename)")"
并且您的结果包含 Perl script, ASCII text executable
而不包含 ELF
,那么这似乎是正确的工具 =)
如果不是,将其设为 Debian
的默认值(通常已经是这种情况)和 Ubuntu
等衍生产品:
$ sudo update-alternatives --set rename /path/to/rename
将 /path/to/rename
替换为 perl rename
可执行文件的路径。
如果你没有这个命令,搜索你的包管理器来安装它或者do it manually(没有依赖...)
这个工具最初是由 Perl 之父 Larry Wall 编写的。