我在一个目录中有很多文件,前几个文件名为:
1A_T
1B_T
2B
3_6A_T
每个文件都有三列以制表符分隔的数据。
我需要将文件名添加到文件中每列的顶部,并对目录中的所有文件执行此操作。保持所有制表符分隔是至关重要的。
简单的建议?我已经从互联网上尝试了几种方法(我是新手),但无法让它正常工作。
感谢您的帮助
答案 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;
<强>试验:强>
<强> REMARK:强>
小心文件名中的空格!
最后但并非最不重要的是,我已在评论中采用了您的两个要点,您可以使用以下命令,以便在第一行的文件名前没有filename\tfilename\tfilename
并仅处理文件工作目录。
./