Macos 如何在mac中的多个文件名中同时附加相同的字符串?
我只需要将字符串“eng”附加到同一目录中的多个文件名中,而无需在MAC终端中更改其扩展名。我搜索了很长一段时间,我发现mv命令立即重命名文件。但我不知道如何在我的场景中实现。有什么能指引我吗 谢谢这应该可以做到:Macos 如何在mac中的多个文件名中同时附加相同的字符串?,macos,unix,command-line-tool,Macos,Unix,Command Line Tool,我只需要将字符串“eng”附加到同一目录中的多个文件名中,而无需在MAC终端中更改其扩展名。我搜索了很长一段时间,我发现mv命令立即重命名文件。但我不知道如何在我的场景中实现。有什么能指引我吗 谢谢这应该可以做到: IFS=$(echo -en "\n\b") cd /path/to/directory for f in * do mv "$f" "${f}eng" done for i in *; do name="${i%.*}"; mv "$i" "${name}eng${i#$
IFS=$(echo -en "\n\b")
cd /path/to/directory
for f in *
do
mv "$f" "${f}eng"
done
for i in *; do name="${i%.*}"; mv "$i" "${name}eng${i#$name}"; done
虽然它不会“一次”重命名所有文件,但这是不可能的。如果您有包含以下文件的目录:
a.ext
b
c.long.sh
您要将其重命名为:
aeng.ext
beng
c.longeng.sh
Mac终端(bash)中的以下“oneliner”应该可以做到这一点:
IFS=$(echo -en "\n\b")
cd /path/to/directory
for f in *
do
mv "$f" "${f}eng"
done
for i in *; do name="${i%.*}"; mv "$i" "${name}eng${i#$name}"; done
解释:
-迭代所有文件名用于i in*;执行
-提取扩展名之前的名称部分(去掉最后一个点以外的所有内容)name=“${i%.*}”
-处理重命名mv
-将eng添加到名称中${name}eng
-获取扩展名(这将从原始文件名中删除名称部分)${i#$name}
注意:如果您想预览它将执行的操作,但不实际执行重命名,请在“mv”之前插入“echo”。这将把语句打印到屏幕上,而不是执行重命名。那么您想在文件内容或文件名中附加“eng”吗?很抱歉,要在文件名中附加它