如何根据内容重命名文本文件?

时间:2011-10-12 10:46:05

标签: linux file rename

我的操作系统是Ubuntu;我有一个包含文本文件的目录;每个文件都包含一个具有唯一ID的行

IDtag IDnumber

行位置在文本文件中是随机的,但很容易识别它是简单的正则表达式

^ IDtag ID [0-9] *

如何根据ID重命名文件?即每个文件都必须获得一个新名称IDnumber.txt 我可以运行Linux shell脚本或Perl脚本。

2 个答案:

答案 0 :(得分:1)

首先尝试这样做

for i in a b c; do echo mv $i `egrep -m1 -e 'IDtag ID[0-9]*' $i | sed -e 's/IDtag ID//'`; done

如果mv是正确的 - 删除回声位

答案 1 :(得分:0)

听起来像是一个家庭作业。 但我会部分回答你的问题。 下面将给出要重命名文件的所有命令列表。

grep ^IDtag * | awk '{split($1,a,":");print "mv",a[1], $2".txt"}'

ivory.192> grep ^IDtag * | awk '{split($1,a,":");print "mv",a[1], $2".txt"}'
mv 000001 000001.txt
mv temp2 000002.txt
ivory.193> 

将它放在for循环中并执行shell脚本中的每一行。

另外还有一个轨道,你可以将输出重定向到一个文件,并给予文件执行权限并将其作为脚本执行。这样你的目的另外还有你重命名的文件列表。