我的操作系统是Ubuntu;我有一个包含文本文件的目录;每个文件都包含一个具有唯一ID的行
IDtag IDnumber
行位置在文本文件中是随机的,但很容易识别它是简单的正则表达式
^ IDtag ID [0-9] *
如何根据ID重命名文件?即每个文件都必须获得一个新名称IDnumber.txt 我可以运行Linux shell脚本或Perl脚本。
答案 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脚本中的每一行。
另外还有一个轨道,你可以将输出重定向到一个文件,并给予文件执行权限并将其作为脚本执行。这样你的目的另外还有你重命名的文件列表。