You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用文件首行首个单词扩展原文件名?

解决方案

你遇到的问题是因为head命令将文件内容通过管道传给awk时,awk的FILENAME变量指向的是标准输入(-),而非原文件名。以下两种简便方法可解决该问题:

方法一:管道外拼接文件名

直接将原文件名与awk输出的首单词拼接,无需让awk处理文件名:

for fname in lrccas1
do
    cp "$fname" "$(head -1 -q "$fname" | awk '{print $1}')_$fname"
done

示例中用_分隔首单词与原文件名,你可根据需求替换为其他分隔符(如.或直接拼接)。

方法二:将原文件名传递给awk

通过-v选项把原文件名作为变量传入awk,让其直接完成拼接输出:

for fname in lrccas1
do
    cp "$fname" "$(head -1 -q "$fname" | awk -v fn="$fname" '{print $1 "_" fn}')"
done

若不需要分隔符,修改为print $1 fn即可。

另外建议给变量添加双引号,避免文件名包含空格或特殊字符时出现异常。

内容的提问来源于stack exchange,提问作者Svend Bager

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:01:42