更改多个文件的名称Linux

我有一些名为a1.txt,b1.txt,c1,txt …在Ubuntu机器上的文件。

有没有快速的方法来改变所有的文件名到a2.txt,b2.txt,c2.txt …?

特别是,我想replace名称string的一部分。 例如,每个文件名都包含一个名为“apple”的string,我想在所有文件名中用“pear”replace“apple”。

任何命令或脚本?

没有任何额外的软件,你可以:

for FILE in *1.txt; do mv "$FILE" $(echo "$FILE" | sed 's/1/2/'); done 
 for f in {a..c}1.txt; do echo "$f" "${f/1/2}"; done 

如果输出看起来正确,用'mv'替换'echo'。

我想用“linux”替换“apple”

 for f in *apple*; do mv "$f" "${f/apple/linux}"; done 

第1行的花括号至少应该用bash。

以下命令将通过用2替换名称中第一个出现的1来重命名指定的文件:

 rename 1 2 *1.txt 
 ls *1.txt | perl -ne 'chomp; $x = $_; $x =~ s/1/2/; rename $_, $x;' 

这里有另外一个选项可以用于我(在上面的例子中)用于不同子目录中的文件

 for FILE in $(find . -name *1.txt); do mv "$FILE" "${FILE/1/2}"; done; 

像这样的东西应该工作:

 for i in *1.txt; do name=$(echo $i | cut -b1) mv $i ${name}2.txt done 

修改以适应您的需求。