在linux中重命名一组文件

时间:2011-03-12 10:31:15

标签: linux bash unix

我有100个名为sub1.txt, sub2.txt,..., sub100.txt的文件。我想将它们重命名为all1.txt, all2.txt,..., all100.txt。怎样才能在linux(unix)中做到这一点?

感谢您的帮助。

6 个答案:

答案 0 :(得分:7)

下面的脚本将使用模式sub*.txt重命名任意数量的文件。由于echo,这也是干运行。只要您对结果感到满意,只需删除echo

#!/bin/bash

for file in sub*.txt; do
  echo mv "$file" "all${file#sub}"
done

答案 1 :(得分:2)

使用rename的util-linux-ng版本:

rename sub all sub*.txt

使用rename的Perl脚本版本:

rename 's/^sub/all/' sub*.txt

答案 2 :(得分:1)

for i in `seq 1 100`; do mv sub$i.txt all$i.txt; done

for i in sub*.txt; do j=`echo $i|sed -e s/sub/all/`; mv $i $j; done

答案 3 :(得分:0)

for F in sub*.txt ; do mv $F all${F#sub}; done

答案 4 :(得分:0)

红宝石(1.9 +)

ruby -e 'Dir["sub*.txt"].each {|x| File.rename(x, x.gsub(/^sub/,"all") ) }'

答案 5 :(得分:-1)

总有一种新方法可以做到:

$ ls sub*.txt | tr -d "sub" | xargs -I{} mv sub{} all{}

希望它有所帮助。