我想使用bash将文件名复制到文档中

时间:2014-05-14 08:26:46

标签: bash

我很擅长使用bash。

我有几百个文件,每个文件都有QP1172,QP1474,QP9926等。我需要文件的名称在文件的第一行(例如,QP1172将在文件QP1172的第1行。 TXT)。

有谁知道我怎么做到这一点?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以执行类似

的操作
for f in QP????.txt; do echo $f | cat - $f >$f.withname; done

创建新文件QP1172.txt.withname等,然后在检查完所有内容后,用它们替换旧文件。

cat此处将名称(在标准输入上给出)与每个文件的文件内容连接起来。)

ADDED:为了让新版本更容易获得正确的名称,可能更容易让它们具有相同的名称,但在另一个目录中。

mkdir withname
for f in QP????.txt; do echo $f | cat - $f >withname/$f; done

答案 1 :(得分:1)

您可以使用sed在开头插入一行:

for f in QP*; do
    sed -i "1i$f" "$f"
done

1i$f表示"在第1行和第34行之前插入包含值$f的行。