我有一个类似名字的列表,如下所示:
/A/B/C/D/E/F/filename_album1-003.mp3
它更像是专辑\d+
我想把它改成类似的东西
/A/B/C/D/E/F/filename_song-3.mp3
song
只是一个固定的字符串。
我尝试了类似的方法basename -s '.mp3'
,但是sed -e /_album//g
这错过了数字 ` 并且没有删除所有前导 001。有什么好的方法可以做到这一点?
答案1
和zsh
:
$ autoload zmv # best in ~/.zshrc
$ zmv -n '(**/)(*_)*-0#(<->.mp3)' '$1$2song-$3'
mv -- A/B/foo_bar-0002.mp3 A/B/foo_song-2.mp3
-n
如果满意则删除。
答案2
尝试这个 :
rename -n 's/_album1-0*/-song-/' /A/B/C/D/E/F/filename_album1-003.mp3
(-n
如果测试正常,请删除开关)
还有其他同名的工具可能能够也可能无法做到这一点,所以要小心。
如果运行以下命令 ( GNU
)
$ file "$(readlink -f "$(type -p rename)")"
你有一个像这样的结果
.../rename: Perl script, ASCII text executable
并且不包含:
ELF
那么这似乎是正确的工具 =)
如果不是,则将其设为默认值(通常已经是这种情况)Debian
并衍生如下Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
(替换为您的命令/path/to/rename
的路径。perl's rename
如果您没有此命令,请搜索包管理器来安装它或手动做
最后但并非最不重要的一点是,这个工具最初是由 Perl 之父 Larry Wall 编写的。
答案3
我不明白你从哪里得到新的“歌曲”名称,你从...开始filename_album1-003.mp3
并切换到filename_song-3.mp3
...
如果您从 ID3 标签获取歌曲名称,那么使用可以从标签信息重命名 mp3 的程序会更容易。比如 easytag、mp3rename、lltag...Debian 存储库和其他存储库中有几个