如何使用shell脚本重命名所有文件?

时间:2011-12-20 02:11:02

标签: shell

我有数百个相同格式的文件。我想通过取前六个字符和扩展名来重命名文件。

以下代码提取前6个字符......我正在显示它们

     for i in *.png; do echo $i | awk '{ print substr($0, 0, 7 )}'; done

我无法连接扩展名。有人可以帮忙吗?如果脚本可以使用mv命令完成,那将会很棒。

由于

2 个答案:

答案 0 :(得分:5)

假设每个文件名在扩展名之前至少有六个字符,您可以编写

for file in *.png ; do mv "$file" "${file:0:6}.png" ; done

答案 1 :(得分:1)

如果继续使用awk

,请在环体外部进行管道处理
for i in *.png; do echo $i; done |
awk '{ print "mv $0 " substr($0, 0, 7) ".png"}' |
sh -vn

修订后的awk打印mv命令。当你感到高兴时,它会做出正确的工作,用-vn替换-x(或什么都不用)。

这适用于任何shell。如果你专门使用bash,那么就有内置的字符串操作来完成你需要的工作 - 请参阅ruakh的答案,了解一种可能的技巧。有许多其他选择;某些系统具有强大的rename命令(其他系统的版本功能较低)。