对于bash,我很新,所以很遗憾,如果这是一个基本问题。我试图重命名一堆mp3文件,以便将它们的文件名加上1-
,并且mv *.mp3 1-*.mp3
不起作用。所以我试图脚本它,先用回声测试的命令:Glob在bash中重命名
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
其中的工作,但如果有人可以赐教,为什么中间命令不工作,我很想知道。或者,如果有一种更加优雅的单行程可以做我想做的事情,我也会很有兴趣看到这一点。
我打算包括单引号,因为否则我需要用反斜杠将所有空格转义。 MV不介意报价。然而,这些文件名也可以包含“in”(和“就此而言) – wim 2011-05-04 12:09:40
当你在'$ f'周围使用双引号时,你不需要转义空格,如果文件名包含单双引号 – bmk 2011-05-04 12:28:59