覆盖一堆文件名

覆盖一堆文件名

我有几个文件夹,每个文件夹都包含大文件名,这些文件名以奇怪的命名格式下载,并且隐藏了文件扩展名,我想将其转换为非常简单的内容。

以下是我想要执行的操作的示例。假设这四个文件位于其中一个文件夹中:

HTTP_services.cgi?FILENAME=%2Fdata%2FMERRA2%2FM2I6NPANA.5.12.4%2F1992%2F08%2FMERRA2_200.inst6_3d_ana_Np.19920818.nc4&FORMAT=bmM0Lw&BBOX=-90%2C-180%2C90%2C180&LABEL=MERRA2_200.inst6_3d_ana_Np.19920818.SUB.nc4&SHORTNAME=M2I6NPANA&SERVICE=
HTTP_services.cgi?FILENAME=%2Fdata%2FMERRA2%2FM2I6NPANA.5.12.4%2F1992%2F08%2FMERRA2_200.inst6_3d_ana_Np.19920819.nc4&FORMAT=bmM0Lw&BBOX=-90%2C-180%2C90%2C180&LABEL=MERRA2_200.inst6_3d_ana_Np.19920819.SUB.nc4&SHORTNAME=M2I6NPANA&SERVICE=
HTTP_services.cgi?FILENAME=%2Fdata%2FMERRA2%2FM2I6NPANA.5.12.4%2F1992%2F08%2FMERRA2_200.inst6_3d_ana_Np.19920820.nc4&FORMAT=bmM0Lw&BBOX=-90%2C-180%2C90%2C180&LABEL=MERRA2_200.inst6_3d_ana_Np.19920820.SUB.nc4&SHORTNAME=M2I6NPANA&SERVICE=
HTTP_services.cgi?FILENAME=%2Fdata%2FMERRA2%2FM2I6NPANA.5.12.4%2F1992%2F08%2FMERRA2_200.inst6_3d_ana_Np.19920821.nc4&FORMAT=bmM0Lw&BBOX=-90%2C-180%2C90%2C180&LABEL=MERRA2_200.inst6_3d_ana_Np.19920821.SUB.nc4&SHORTNAME=M2I6NPANA&SERVICE=

我希望这些只是被重新命名为一些非常基本的名字,例如

1.nc4
2.nc4
3.nc4
4.nc4

新编号与原始文件名无关。我只是希望能够使用我拥有的另一个程序轻松地遍历它们。

我曾尝试使用像 pyrenamer 和 metamorphose 这样的批量重命名程序,但它们似乎擅长用其他模式替换名称中的模式,而不仅仅是用模式覆盖名称。

答案1

使用一个简单的循环:

count=0; for file in HTTP_services*; do mv "$file" "$(( count++ )).nc4"; done;

首先使用它echo来确保它能按你希望的方式工作:

$ count=0; for file in HTTP_se*; do echo "mv" "$file" "$(( count++ )).nc4"; done;
mv HTTP_services.cgi?FILENAME=%2Fdata%1 1.nc4
mv HTTP_services.cgi?FILENAME=%2Fdata%2 2.nc4

相关内容