通过删除前 171 个字符来重命名文件?



我从互联网上下载了数千个文件,命名约定如下:

HTTP_services.cgi?FILENAME=%2Fdata%2FGPM_L3%2FGPM_3IMERGM.06%2F2020%2F3B-MO.MS.MRG.3IMERG.20200301-S000000-E235959.03.V06B.HDF5&FORMAT=bmM0Lw&BBOX=-9,114.3,-8,115.8&LABEL=3B-MO.MS.MRG.3IMERG.20200301-S000000-E235959.03.V06B.HDF5.SUB.nc4

我想通过删除文件名中的前 171 个字符来重命名所有文件。所以我会有一个名为"3B-MO.MS"的文件。MRG.3IMERG.20200301-S000000-E235959.03.V06B.HDF5.SUB.nc4">

是否有任何可以使用的单行解决方案?我在 mac 中使用终端。

您可以尝试以下正则表达式:

.{171}

上述正则表达式的解释:

  • .- 表示表示除新行之外的任何内容的元字符。
  • {171}- 表示一个量词,指示任何字符可以出现 171 次。

您可以在此处找到上述正则表达式的演示。

您可以使用 GNU 重命名实用程序来执行以下命令以获得您的结果。

rename 's/.{171}//g' *.nc4

值得一读:我无法在 MACOS 上运行rename命令。怎么办?

重命名是最好的解决方案,但您也可以使用子字符串命令:

for file in `ls *IMERG*` ; do 
mv $file ${file:171}
done

或者使用切割:

for file in `ls *IMERG*` ; do 
mv $file `echo ${file} | cut -c 171-`
done

如果您确定每个文件名正好有 171 个字符。

最新更新