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

时间:2013-12-04 18:45:22

标签: linux command-line filenames

我有文件:

1.pgm ... 400.pgm连续数字从1到400全部采用相同的格式。

我想将它们复制到:

401.pgm ... 800.pgm,这是基本的,因为我需要更多的输入数据

我想知道在Linux中有没有快速的方法呢?

2 个答案:

答案 0 :(得分:4)

如果您的文件具有此结构,则只需:

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

并在您确信这样做符合您的要求后取出echo

答案 1 :(得分:1)

使用rename(1)

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

但这是一个单独的计划。

是一种不那么优雅的纯粹打击方式
for f in *.pgm; do mv $f $((400+${f//[!0-9]/})).pgm; done