部分文件使用不同的文件类型重命名

时间:2013-11-29 10:04:56

标签: linux bash rename mv data-management

对不起,如果这比通常的问题非常简单,但我刚刚开始。我有一些文件都具有相同的起始名称,但文件类型不同,例如:

1234.x
1234.y
1234.z
1234_V2.x
1234_V2.y
1234_V2.z

我想重命名这些内容的第一部分,同时保留任何结尾和文件类型,例如:

4321.x
4321.y
4321.z
4321_V2.x etc

我尝试过使用

mv 1234* 4321* 

rename 1234* 4321*

但没有运气!我也浏览过所有其他SO文章,虽然我可以使用循环,但大多数依赖于文件类型相同。

提前致谢

4 个答案:

答案 0 :(得分:2)

您可以使用bash替换:

for file in 1234* 
do mv "$file" "4321${file#1234}"
done

或者,将do mv替换为以下

do mv "$file" "${file/1234/4321}"

man bash部分的EXPANSION部分Parameter Expansion

小节中查看详情

答案 1 :(得分:0)

你可以使用shell脚本,但它有点难看,因为它会分叉很多,因此,如果你有很多要重命名的文件,那就需要时间。

for f in 1234*; do echo mv $f $(echo $f | sed -e 's/1234/4321/'); done

Otherwize,rename是一个很好的方法:

rename 's/1234/4321/' 1234*

重命名需要将正则表达式作为第一个参数,请参阅在线documentation

答案 2 :(得分:0)

假设您的文件名为12344321,即所有文件都是常量,您可以试试这个

for fn in `find . -name 1234*` 
do 
    newf=`echo $fn | sed s/1234/4321/`
    mv $fn $newfn
done

答案 3 :(得分:0)

看看它是否有效:

rename "s/1234/4321/" 1234*

命令表示在名称为s的文件中替换"1234" "4321" 1234* {{1}}} {/ 1}}

您还可以查看here。它比你的情况稍微复杂一点。