如何重命名单个目录中的多个文件,以删除文件名末尾的时间戳?

如何重命名单个目录中的多个文件,以删除文件名末尾的时间戳?

如何在 Linux 上重命名以下文件以删除文件名中的时间戳?

AB_CD_EFGHIKL_20191221_D_1.dat.20191221102446_processed
AB_CD_EFGHIKLMN_20191221_D_1.dat.20191221102428_processed

我想将文件重命名为:

AB_CD_EFGHIKL_20191221_D_1.dat
AB_CD_EFGHIKLMN_20191221_D_1.dat

答案1

如果您有perl-renamerename在 Debian 和 Ubuntu 以及许多其他系统上调用),您可以执行以下操作:

rename -n 's/dat\.\d+_processed/dat/' *.dat*

-n使得它只是打印出它将做出的更改,而无需实际重命名任何内容。如果有效,请再次运行该命令,但不带-n.


或者,您可以在 shell 中执行此操作:

for f in *.dat*; do echo mv -- "$f" "${f%.dat*}.dat"; done

再次,如果这满足您的需要,请删除echo并再次运行它。

相关内容