为多个文件添加文件名到每个列的顶部(选项卡分隔)

时间:2018-01-31 05:31:57

标签: linux text

我在一个目录中有很多文件,前几个文件名为:

1A_T
1B_T
2B
3_6A_T

每个文件都有三列以制表符分隔的数据。

我需要将文件名添加到文件中每列的顶部,并对目录中的所有文件执行此操作。保持所有制表符分隔是至关重要的。

简单的建议?我已经从互联网上尝试了几种方法(我是新手),但无法让它正常工作。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令:

for f in `find . -type f`; do echo $f; sed -i.bak "1 i $f\t$f\t$f" $f; done

以防万一在另一个目录中对其进行测试,然后再在您的工作目录中进行测试

<强>说明:

  • find . -type f将从您的目录(及其子目录)获取所有文件(从您要继续的目录运行此命令或相应地更改. {{1你的 dir

  • PATH会迭代您还可以使用的所有文件for f in命令

  • xargs将对您的文件进行备份,然后对其进行编辑并在文件的第一行之前添加sed -i.bak "1 i $f\t$f\t$f" $f;

<强>试验:

enter image description here

<强> REMARK:

小心文件名中的空格!

最后但并非最不重要的是,我已在评论中采用了您的两个要点,您可以使用以下命令,以便在第一行的文件名前没有filename\tfilename\tfilename并仅处理文件工作目录。

./