我有一个命令(可在stackoverflow.com上找到),该命令从一个文件中剪切定义的行数并将其放入另一个文件中,即(对于1000行):
head -1000 input > output && sed -i '1,+999d' input
对我来说,这一切都清楚了,但是要使用超过50,000个文件并“询问” sed为每个操作创建不同的输出文件名,又该怎么办?
例如,对于文件text1.txt
,text2.txt
,text3.txt
,我想保留这些文件(在从它们的顶部剪下一些线之后),并把这些剪线变成output1.txt
,output2.txt
,output3.txt
。我假设我需要对大量文件使用-exec
来避免argument list too long
错误,但是我不知道如何使输出文件命名过程自动化?
仅作记录用途,我的输入文件具有不同的名称,其中一些文件名很长,而且它们的名称与text1.txt
,text2.txt
等相距甚远...
我想到的是输入= {text1.txt
,输出= text1_output.txt
。这可能是有道理的...
如果我想对许多相同类型的文件运行一个简单的命令,我只会使用find . -name '*.txt' -exec sed SOME_COMMAND_HERE {} \;
,但是如何将其与head
和不同的输出名称结合起来呢?
编辑:
这真的是重复的问题吗?据我了解,例如,split
命令可以通过指定的n行将大文件拆分为较小的文件。我不希望每个文件在每n行被分割。如果我有一个400行的文件,则我希望先保存4行作为输出文件,然后将另外396个保存为原始文件并保留其原始名称。