根据第一行中的数字重命名文件

时间:2014-05-03 04:18:12

标签: awk gawk

我使用来自split a fasta file and rename on the basis of first line的Theodros Zelleke的awk答案作为以下代码的模板:

awk '/[[:digit:]]/ {OUT=substr($0,1) ".txt"}; OUT {print > OUT}' /path/to/file

上面的代码导致文件名由整个第1行组成,文件只包含前2行而不是完整的原始文件。

我想根据每个文本文件第一行的位置编号重命名数百个文件。以下是我正在处理的文本文件的2个示例。

文件1将变为" 1000030.txt"

Location Number.: 1000030 Location Name, State

Text: Text

More Text  
More Text  
More Text  

文件2将变为" 100003099111134.txt"

Location Number.: 100003099111134 Location Name, State

Text: Text

More Text  
More Text  

提前谢谢。

2 个答案:

答案 0 :(得分:4)

要将旧文件复制到第一行中有新内容的新文件,您可以使用此awk

awk 'FNR==1 {file=$3} {print > (file".txt")}' oldfiles*

它读取第一行并将其设置为新文件名。

答案 1 :(得分:2)

个人;我只是写一个简单的shell脚本。类似的东西:

# Untested example...
for f in *; do
  n=`head -1 $f|cut -c19-26`
  mv $f $n
done