【发布时间】:2020-04-17 02:16:25
【问题描述】:
Ubuntu 16.04
重击 4.4.20
重命名 0.20
我每天都有数百个文件被复制到一个文件夹中。文件夹名称每天都不一样,所以文件夹里面的文件必须重命名
这是复制到文件夹后的文件示例。
2019-11-30_hs5_felix.doggie.com_1112.garage
2019-12-01_hs5_ralph.doggie.com_1112.garage
2019-12-04_hs5_sartah.doggie.com_1112.garage
2019-12-05_hs5_felix.doggie.com_1112.garage
2019-12-07_hs5_ggg.doggie.com_1112.garage
2019-12-12_hs5_fex.doggie.com_1112.garage
2019-12-19_hs5_sioia.doggie.com_9999.garage
2019-12-21_hs5_felix.doggie.com_1002.garage
2019-12-22_hs5_sonia.doggie.com_1112.garage
2019-12-25_hs5_isabel.doggie.com_1106.garage
这是相同的模式:
same_same_"${one}".same.same_"${two}".same
因此变量将代表我们将用来重命名所有文件的两个词,并且重命名后的文件需要如下所示:
one="ssss"
two="1234"
2019-11-30_hs5_sssss.doggie.com_1234.garage
2019-12-01_hs5_sssss.doggie.com_1234.garage
2019-12-04_hs5_sssss.doggie.com_1234.garage
2019-12-05_hs5_sssss.doggie.com_1234.garage
2019-12-07_hs5_sssss.doggie.com_1234.garage
2019-12-12_hs5_sssss.doggie.com_1234.garage
2019-12-19_hs5_sssss.doggie.com_1234.garage
2019-12-21_hs5_sssss.doggie.com_1234.garage
2019-12-22_hs5_sssss.doggie.com_1234.garage
2019-12-25_hs5_sssss.doggie.com_1234.garage
最终产品比如何完成更重要,因此我们可以使用任何命令到达那里。
【问题讨论】:
-
Ubuntu 版本和 Bash 版本都不错,但不要告诉我们您系统上的
rename命令。有两个独立的 Linuxrename命令功能非常不同。一个来自util-linux包(不支持正则表达式匹配)和perl-rename支持。显示rename --version的输出。 -
@DavidC.Rankin 重命名版本 0.20。我在看你的回答。你所做的所有解释就是我每天回到这个网站的原因。
-
如果您有任何问题,请告诉我,我很乐意进一步解释。我查看了使用
rename,但使用 util-linux 版本,您只能替换第一次出现的表达式。在您的情况下,您需要替换两个表达式。这意味着 perl-rename 将是唯一的选择——但你仅限于需要该软件包——许多发行版不包括该软件包。您通常会找到sed。您也可以仅使用 bash 参数扩展 进行部分替换——这是另一个不错的选择。