更改多个文件命令行

时间:2013-09-28 12:55:35

标签: linux bash ubuntu

我使用mp3splt从mp3混音中分离了一些曲目。

BASH:(mp3splt -c('**!!***use .cue file***!!**') [cuefile.cue] [nonstopmix.mp3] ~for anyone interested, is in the Ubu repos~)

我最终得到了这些文件名:“Antares” - 01 - “Xibalba”.mp3这不是我喜欢的格式,现在我已经做了一个小项目来改变它们的shell脚本但是它更难比我预想的还要好。

我想更改文件名:

"Antares" - 01 - "Xibalba".mp

为:

01-Antares_-_Xibalba.mp3

到目前为止,我已经使用过:

for var in *.mp3; do mv $var {var/"/}; done

我可以重复一遍,直到我通过,删除0x号并添加一个,但我想更有效率。

任何人都可以给我一个指针(!不是脚本!)? 我还是喜欢自己写,但是有很多选择让我有点失落:(

到目前为止,我还想过使用这个程序流程:

  1. 读取包含.mp3的所有文件名并声明为变量$ var

  2. 从引号中删除$ var

  3. 选择0x编号,追加分隔符_(0x _)

  4. 将0x_移至字符串的开头

  5. 选择剩余的' - - '并更改为' - '

  6. 完成

    是否使用bash程序?特别是改变0x谜题,因为我需要一个循环来增加这个数字并测试它是否存在于filename变量中然后它将被更改。

    帮助我获得一些命令 - 绝地技能PLZ !!

2 个答案:

答案 0 :(得分:0)

尝试这样做:

rename -n 's/"(\w+)"\s+-\s*(\d+)\s*-\s*"(\w+)"\.mp/$2-$1_-_$3.mp3/' *mp
来自shell提示符的

。它非常有用,你可以像我一样用一些技巧来代替。

当您的测试成为值时,您可以删除-n(干运行模式开关)。

warning http://pix.toile-libre.org/upload/original/1377510865.png 还有其他同名工具可能会或可能不会这样做,所以要小心。

如果您运行以下命令(linux

$ file $(readlink -f $(type -p rename))

你有一个像

的结果
.../rename: Perl script, ASCII text executable

然后这似乎是正确的工具=)

如果没有,请将其设为Debian上的默认值(通常已经是这种情况)和Ubuntu之类的衍生物:

$ sudo update-alternatives --set rename /path/to/rename

最后但并非最不重要的是,这个工具最初是由Perl的父亲Larry Wall编写的。

答案 1 :(得分:0)

在python 2.x中很容易做到。您可以使用任何所需语言的逻辑。

import string
a=raw_input('Enter the name of song')
a=a.replace('"', "")
a=a.replace('.mp', ' .mp3')
words = a.split()
print words[2]+'-'+words[0]+'_-_'+words[4]+words[5]

逻辑:

我删除了“,然后将.mp转换为.mp3,然后拆分字符串,创建一个列表(数组),然后根据需要打印元素。