如何在Mac中同时在多个文件名中附加相同的字符串?

问题描述 投票:0回答:3

我只需要将字符串“eng”附加到同一目录中的许多文件名,而不更改 MAC 终端中的扩展名。我找了好久,找到了mv命令可以一次性重命名文件。但我不知道如何实施到我的场景中。有人可以指导我吗?

谢谢

macos unix command-line-tool
3个回答
28
投票

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

a.ext
b
c.long.sh

并且您想将它们重命名为:

aeng.ext
beng
c.longeng.sh

Mac 终端(bash)中的以下“oneliner”应该可以做到这一点:

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}
    - 获取扩展名(这会从原始文件名中删除名称部分)

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


0
投票

虽然这个问题特别要求“Mac Terminal”,但这也可以在 Mac Finder 中完成,如下所示:

  • 选择目录中的所有文件(Command + A)
  • 右键单击选定的文件之一
  • 选择重命名
  • 选择“添加文本”和“名称后”
  • eng 放入文本框中
  • 单击重命名

这会将字符“eng”放在文件名后面,但仍保持扩展名不变。


-1
投票

这应该可以做到:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.