更改多个文件Linux的名称

时间:2011-08-08 17:13:20

标签: linux file-rename

我在ubuntu机器上有许多名为a1.txt,b1.txt,c1,txt ...的文件。

有没有快速方法可以将所有文件名更改为a2.txt,b2.txt,c2.txt ......?

特别是,我想替换部分名称字符串。例如,每个文件名都包含一个名为“apple”的字符串,我想在所有文件名中将“apple”替换为“pear”。

任何命令或脚本?

6 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:4)

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 :(得分:2)

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

rename 1 2 *1.txt

答案 3 :(得分:0)

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

答案 4 :(得分:0)

这是另一个对我有用的选项(按照上面的例子),用于不同子目录中的文件

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

答案 5 :(得分:-1)

这样的事情应该有效:

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

根据您的需要进行修改。