我有数百个相同格式的文件。我想通过取前六个字符和扩展名来重命名文件。
以下代码提取前6个字符......我正在显示它们
for i in *.png; do echo $i | awk '{ print substr($0, 0, 7 )}'; done
我无法连接扩展名。有人可以帮忙吗?如果脚本可以使用mv命令完成,那将会很棒。
由于
答案 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
命令(其他系统的版本功能较低)。