如何在mac中的多个文件名中追加相同的字符串?

时间:2014-06-19 08:14:22

标签: macos unix command-line-tool

我只需要追加字符串" eng"到同一目录中的许多文件名,而不更改MAC TERMINAL中的扩展名。我搜索了很长时间,我发现mv命令一次重命名文件。但我不知道如何实施我的方案。任何人可以指导我吗?

谢谢

2 个答案:

答案 0 :(得分:18)

如果您有包含以下文件的目录:

a.ext
b
c.long.sh

您想将它们重命名为:

aeng.ext
beng
c.longeng.sh

以下" oneliner"在Mac终端(bash)应该这样做:

for i in *; do name="${i%.*}"; mv "$i" "${name}eng${i#$name}"; done

解释:

  • for i in *; do - 遍历所有文件名
  • name="${i%.*}" - 在扩展名之前提取名称部分(剥离最后一个点之后的所有内容)
  • mv - 处理重命名
  • ${name}eng - 将eng添加到名称
  • ${i#$name} - 获取扩展名(这会从原始文件名中删除名称部分)

注意:如果您想预览它会做什么,但实际上没有执行重命名,请插入一个" echo"在" mv"之前。这会将语句打印到屏幕上,而不是执行重命名。

答案 1 :(得分:0)

这应该这样做:

IFS=$(echo -en "\n\b")
cd /path/to/directory
for f in *
do
    mv "$f" "${f}eng"
done

虽然它不会“同时”重命名所有文件,但这是不可能的。