mac os xterminal批量重命名
我有一个名为一系列文件的文件夹:
prefix_1234_567.png prefix_abcd_efg.png 我想批量删除一个下划线和中间内容,所以输出将是
 prefix_567.png prefix_efg.png 
感谢相关但不完全说明: 我怎样才能批量重命名文件使用terminal? 正则expression式在OS Xterminal中批量重命名文件
 在您的具体情况下,您可以使用下面的bash命令( bash是macOS上的默认shell): 
 for f in *.png; do echo mv "$f" "${f/_*_/_}"; done 
  注意: echo被预置为mv ,以执行空运行。  删除它来执行实际的重命名。 
您可以从命令行运行它,或者在脚本中使用它。
-   "${f/_*_/_}"是bash参数扩展的一个应用程序:(first)子string匹配模式_*_被replace为literal_,从名称中有效地切割中间的标记。
-  请注意, _*_是模式 (通配符expression式,也用于通配符),而不是正则expression式 (要了解模式,运行man bash并searchPattern Matching)。
 如果您经常发现批量重命名文件,请考虑一个专门的工具,如基于Perl的rename实用程序 。 在OSX上,你可以使用stream行的包pipe理器Homebrew来安装它,如下所示: brew install rename 
 这是使用rename的等效命令: 
 rename -n -e 's/_.*_/_/' *.png 
 再一次,这个命令执行一个空运行; 删除-n来执行实际的重命名。 
-  与bash解决scheme类似,s/.../.../执行文本replace,但与bash不同 – 使用了真正的正则expression式 。
 要重命名文件,您可以使用rename实用程序: 
 brew install rename 
例如,要在当前目录中的所有文件名中更改searchstring:
 rename -nvs searchword replaceword * 
删除'n'参数以应用更改。
 更多信息: man rename 
你可以使用sed:
 ls * | sed -e 'p;s@_.*_@_@g' | xargs -n2 mv 
结果:
 prefix_567.png prefix_efg.png 
  *先做一个干运行,最后用echo代替mv 
我有一批看起来像这样的文件:be90-01.png,需要将短划线改为下划线。 我用这个,效果很好:
 for f in *; do mv "$f" "`echo $f | tr '-' '_'`"; done 
 您可以使用brew安装rename命令。 只要做brew install rename并使用它。 
 使用mmv 
 mmv '*_*_*' '#1_#3' *.png