sed - 将来自特定 file/folder 名称的字符串合并到文本文件中

sed - Incorporate a string from specific file/folder names into text files

我尝试在文本文件的第一行添加一个字符串。

每个字符串的第一部分都是相同的。这里是“#Test:”。字符串的最后部分应包含从文件夹和文件名派生的数字。 文件夹名称仅由 1-52 之间的数字组成。每个文件夹中有 1-20 个文件,结构如下:

操作系统是Ubuntu20.04.

我可以分别更改每个文件。例如,终端中的以下命令为第一个文件夹中的一个文件添加#Tree:1。

sed -i '1s/^/#Test:1 \n/' '/path/to/the/file' 

但是,如果我尝试对文件夹中的所有文件执行此操作,我将无法继续。你能告诉我如何自动完成吗?我不一定限于 sed.

谢谢。

这可能是您想要的,使用 GNU awk 进行“就地”编辑,BEGINFILE(因此它甚至可以在空输入文件上工作),gensub():

find . -type f -exec awk -i inplace '
    BEGINFILE { print "#Test:" gensub(".*/([0-9]+)_[^/]+$","\1",1,FILENAME) }
1' {} +