如何使用unix命令从文件名中删除整数模式

时间:2015-08-18 00:11:34

标签: shell unix rename

我有一堆前缀为曲目编号的mp3文件。例如:

  

01 - MovieName - SongNameA.mp3

     

02 - MovieName - SongNameB.mp3

我需要从文件名中搜索并删除曲目编号和连字符。

我尝试使用find和grep,但我无法找到要使用mv命令重命名的管道查询。

1 个答案:

答案 0 :(得分:1)

使用shell

for f in [[:digit:]][[:digit:]]' - '*mp3; do mv -i -- "$f" "${f#?????}"; done

或者,同样的事情,但写成多行:

for f in [[:digit:]][[:digit:]]' - '*mp3
do
    mv -i -- "$f" "${f#?????}"
done

glob [[:digit:]][[:digit:]]' - '*mp3匹配您感兴趣的文件。mv "$f" "${f#?????}"删除其名称的前五个字符。 -i的{​​{1}}选项告诉它在覆盖现有文件之前询问。

使用Perl'重命名实用程序

mv

这会查看所有rename 's/^\d\d - //' *mp3 个文件,如果它们的名称以两位数开头,后跟空格,后跟一个破折号,后跟空格,则删除这些字符。

除非您提供.mp3选项,否则

rename将拒绝覆盖现有文件。

本节涉及Perl的-f实用程序。请注意,某些Linux发行版默认安装了不同且不兼容的rename实用程序。有时,perl rename实用程序的名称为rename