【发布时间】:2022-08-02 17:01:41
【问题描述】:
我有几个自动生成的文件(例如,参见下图),我想根据第一行中的第三个单词重命名它们(在本例中为 42.txt)。
第一行:
配体CC@@HOc3ccccc342P10000001
有没有办法做到这一点?
标签: linux bash rename filenames txt
我有几个自动生成的文件(例如,参见下图),我想根据第一行中的第三个单词重命名它们(在本例中为 42.txt)。
第一行:
配体CC@@HOc3ccccc342P10000001
有没有办法做到这一点?
标签: linux bash rename filenames txt
假设您有 file.txt 包含:
ligand CC@@HOc3ccccc3 42 P10000001
并且您想根据文件中的第三个字段将file.txt 重命名为42.txt。最简单的方法是简单地将mv 与awk 一起使用命令替换,例如:
mv file.txt $(awk 'NR==1 {print $3; exit}' file.txt).txt
在哪里命令替换$(...) 只是 awk 表达式 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
【讨论】: