我只需要追加字符串" eng"到同一目录中的许多文件名,而不更改MAC TERMINAL中的扩展名。我搜索了很长时间,我发现mv命令一次重命名文件。但我不知道如何实施我的方案。任何人可以指导我吗?
谢谢
答案 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
虽然它不会“同时”重命名所有文件,但这是不可能的。