对相同类型的文件但不同的输出文件名使用sed命令

时间:2019-02-01 09:10:32

标签: bash sed

我有一个命令(可在stackoverflow.com上找到),该命令从一个文件中剪切定义的行数并将其放入另一个文件中,即(对于1000行):

head -1000 input > output && sed -i '1,+999d' input

对我来说,这一切都清楚了,但是要使用超过50,000个文件并“询问” sed为每个操作创建不同的输出文件名,又该怎么办?

例如,对于文件text1.txttext2.txttext3.txt,我想保留这些文件(在从它们的顶部剪下一些线之后),并把这些剪线变成output1.txtoutput2.txtoutput3.txt。我假设我需要对大量文件使用-exec来避免argument list too long错误,但是我不知道如何使输出文件命名过程自动化?

仅作记录用途,我的输入文件具有不同的名称,其中一些文件名很长,而且它们的名称与text1.txttext2.txt等相距甚远... 我想到的是输入= {text1.txt,输出= text1_output.txt。这可能是有道理的...

如果我想对许多相同类型的文件运行一个简单的命令,我只会使用find . -name '*.txt' -exec sed SOME_COMMAND_HERE {} \;,但是如何将其与head和不同的输出名称结合起来呢?

编辑:

这真的是重复的问题吗?据我了解,例如,split命令可以通过指定的n行将大文件拆分为较小的文件。我不希望每个文件在每n行被分割。如果我有一个400行的文件,则我希望先保存4行作为输出文件,然后将另外396个保存为原始文件并保留其原始名称。

0 个答案:

没有答案