[英]Rename file as third word on it (bash)
我有几个自动生成的文件(例如,请参见下图),我想根据第一行中的第三个单词重命名它们(在本例中为 42.txt)。
第一行:
配体 CC@@HOc3ccccc3 42 P10000001
有没有办法做到这一点?
假设您有file.txt
包含:
ligand CC@@HOc3ccccc3 42 P10000001
并且您想根据文件中的第三个字段将file.txt
重命名为42.txt
。
*使用awk
最简单的方法是在命令替换中简单地使用mv
和awk
,例如:
mv file.txt $(awk 'NR==1 {print $3; exit}' file.txt).txt
命令替换$(...)
只是awk
表达式awk 'NR==1 {print $3; exit}'
awk 'NR==1 {print $3; exit}'
仅输出第三个字段(例如42
)。 指定NR==1
确保仅考虑第一行,并在该规则末尾exit
确保如果file.txt
是 100000 行文件,则不再处理浪费时间的行。
确认
file.txt
现在重命名为42.txt
,例如
$ cat 42.txt
ligand CC@@HOc3ccccc3 42 P10000001
使用read
您也可以使用read
简单地读取第一行并将第三个单词作为name
,然后mv
文件,例如
$ read -r a a name a <file.txt; mv file.txt "$name".txt
上面的临时变量a
只是用来读取和丢弃文件第一行中的其他单词。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.