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

rename files by removing the first 171 characters?

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

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次。

你可以在here.

中找到上述正则表达式的演示

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

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

值得一读: I can't run rename command on MACOS. What to do?

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

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

或者使用 cut:

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

如果您确定每个文件名正好可以使用 171 个字符。