Answers:
在特定情况下,可以使用以下bash
命令(bash
macOS上的默认外壳):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
注意:如果您的文件名有可能以开头-
,请放在文件名--
[1]之前:
mv -- "$f" "${f/_*_/_}"
注:echo
前置到mv
以进行试运行。删除它以执行实际的重命名。
您可以从命令行运行它,也可以在脚本中使用它。
"${f/_*_/_}"
是bash
参数扩展的一种应用:(第一个)子字符串匹配模式_*_
被文字替换_
,有效地从名称中删除了中间标记。_*_
是一个模式(通配符表达式,也用于通配符),而不是正则表达式(以了解模式,运行man bash
并搜索Pattern Matching
)。如果您经常发现自己进行批量重命名文件,请考虑安装专用工具,例如基于Perl的rename
实用程序。在macOS上,您可以使用流行的软件包管理器Homebrew进行安装,如下所示:
brew install rename
这等效于顶部使用的命令rename
:
rename -n -e 's/_.*_/_/' *.png
同样,此命令执行空运行;删除-n
以执行实际的重命名。
bash
解决方案类似,s/.../.../
执行文本替换,但是-与in不同bash
-使用真正的正则表达式。[1] --
大多数实用程序支持的特殊参数的用途是,表示应将后续参数视为操作数(值),即使它们由于以开头而看起来像选项一样-
,如Jacob C.所述。
.*
-> $1
)的示例,例如,重命名Foo bar S01E01 biz baz.ext
为S01E01.ext
:rename -n -e 's/.*(S[0-9]{2}E[0-9]{2}).*(\.[a-z]{2,4})/$1$2/' *
echo
用于空运行的想法。谢谢你的提示!
brew install rename
要重命名文件,可以使用该rename
实用程序:
brew install rename
例如,要更改当前目录中所有文件名中的搜索字符串:
rename -nvs searchword replaceword *
删除“ n”参数以应用更改。
更多信息: man rename
OS X
GNU bash
(x86_64-apple-darwin)版本不包含重命名实用程序。
brew install rename
rename -vs GLYCOPHORIN GLYCC *
,现在它会自动重命名450多个文件。而且超级快。
您可以使用sed:
ls * | sed -e 'p;s@_.*_@_@g' | xargs -n2 mv
结果:
prefix_567.png prefix_efg.png
*先进行空运行,mv
最后用echo
说明:
ls * | xargs -I % bash -c 'echo mv "%" "$(sed 's@_.*_@_@' <<<"%")"'
删除echo
实际重命名)。
您可以rename
使用安装命令brew
。只是做brew install rename
并使用它。
使用 mmv
mmv '*_*_*' '#1_#3' *.png
sudo apt-get install mmv
。
brew install mmv
。