快速的方法来修改在Linux中的多个文件名

我有文件:

1.pgm … 400.pgm连续的数字,从1到400都是相同的格式。

我想将它们复制到:

401.pgm … 800.pgm,这很基础,因为我需要更多的input数据

我想知道是否有任何快速的方法来做到这一点在Linux?

如果你的文件有这个结构,那么简单地说:

for file in *.pgm ; do num=${file%%.pgm} newnum=$(( $num + 400 )) #more portable than 'let', thx to @user2719058 for the reminder! echo mv "${file}" "${newnum}.pgm" done 

一旦你确信这是你想要的,

rename(1)

 rename 's/(\d+)/400+$1/e' *.pgm 

不过这是一个单独的程序。 在纯粹的bash中稍微不太优雅的方式是

 for f in *.pgm; do mv $f $((400+${f//[!0-9]/})).pgm; done