6

如果这是一个基本问题,我对 bash 还很陌生,很抱歉。我试图重命名一堆 mp3 文件以添加1-到它们的文件名之前,mv *.mp3 1-*.mp3但不幸的是没有工作。所以我尝试编写脚本,首先使用 echo 来测试命令:

for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done

这似乎输出了我喜欢的命令,所以我删除了回声,将命令更改为

for f in *.mp3 ; do mv \'$f\' \'1-$f\'; done

哪个失败了。接下来,我尝试像这样将命令向前传递

for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done | /bin/sh

哪个有效,但如果有人能告诉我为什么中间命令不起作用,我会很想知道。或者,如果有更优雅的单线可以做我想要的,我也会有兴趣看到。

4

2 回答 2

8

我认为您必须将命令更改为

for f in *.mp3 ; do mv "$f" "1-$f"; done

否则,您将传递类似于'file1.mp3'and'1-file1.mp3'mv内容(包括单引号)。

于 2011-05-04T11:58:45.003 回答
8

试运行:

rename -n 's/^/1-/' *.mp3

-n如果运行该命令看起来正确,请删除。man rename详情。

于 2011-05-04T12:03:18.900 回答