重命名特定文件集(Linux)

重命名特定文件集(Linux)

我有以下文件:

boxScoreBaseball.html.php
boxScoreBasketball.html.php
boxScoreBowling.html.php
boxScoreCheer.html.php
boxScoreCrew.html.php
boxScoreCrossCountry.html.php
boxScoreEquestrian.html.php
boxScoreFieldHockey.html.php
boxScoreFootball.html.php
boxScoreGolf.html.php
boxScoreGymnastics.html.php
boxScoreHockey.html.php
boxScoreLacrosse.html.php
boxScoreRugby.html.php
boxScoreSkiing.html.php
boxScoreSoccer.html.php
boxScoreSoftball.html.php
boxScoreSwimming.html.php
boxScoreTennis.html.php
boxScoreTrack.html.php
boxScoreVolleyball.html.php
boxScoreWaterPolo.html.php
boxScoreWrestling.html.php

我想boxScore从每个文件中取出部分,因此,例如,boxScoreBaseball.html.php将变成baseball.html.php。最简单的方法是什么?

答案1

可能只适用于 Bash:

for i in boxScore*; do mv $i ${i#boxScore}; done

我总是使用这个参考来进行一些快速而肮脏的 bash 操作:http://aurelio.net/shell/canivete/en/(见第 4 节)。

答案2

另一个选择是使用mmv(见这篇文章中有更多示例)。

对于给定的例子:

mmv "boxScore*.html.php" "#1.html.php"

答案3

您不能直接重命名所有内容,必须使用 bash 脚本。也许这些链接对您有用:

答案4

运行这个小的 shell 脚本:

for file in *; do echo "${file:8}" | sed -e 's/^\([A-Z]\)\(.*\)/\l\1\2/' | xargs mv "$file"; done

我们遍历当前目录中的每个文件。首先,我们回显不包含前 8 个字符的文件名。然后我们使用sed将第一个字符转换为小写。sed搜索表达式表示“行首,组 1:大写字母,组 2:其余”,替换表达式表示“匹配组 1 的小写,然后附加组 2”。最后一部分只是将旧文件移动到转换后的文件名。

相关内容