我是非常非常非常新的编程,并试图学习如何更快地完成繁琐的分析任务。我有一个包含50个实验文件夹的主文件夹(Master),每个实验文件夹中都有另一组包含文本文件的文件夹。我想从其中一个文本fiels中提取2行(第7行的实验标题,第104行的斜率)并将它们复制到一个新的单个文件中。
到目前为止,我所学到的只是如何提取行并添加到新文件中。
sed -n'7p; 104p'reco.txt>> RESULTS.TXT
如何从“Master”文件夹的子文件夹中的所有文件“reco.txt”中提取这两行并导出到单个文本文件中?
尽可能多的解释可以帮助我学习。
答案 0 :(得分:0)
您可以将find
与xargs
结合使用。您可以单独获取所有相关文件的列表:
find . -name reco.txt -print
这将查找当前目录(reco.txt
)或所有子目录中名为.
的所有文件,并将它们写入标准输出。
现在,通常你可以使用-exec
参数来find
,它将为找到的每个文件运行一个程序,除了通常将多个结果组合成一个单独的执行(附加到命令行) )。您对sed
的特定调用一次只能在一个文件上运行。
因此,您可以使用-exec
代替xargs
,而find Master -name reco.txt -print0 | xargs -0 -n1 sed -n '7p; 104 p' > results.txt
基本上是相同的,但具有更多控制权。
Master
执行以下操作:
reco.txt
或子目录中搜索名为-print0
的任何文件。xargs
)输出每个文件名 - 这允许完整路径包含通常需要转义的字符(例如空格)-0
,执行以下操作:
-n1
)sed -n '7p; 104 p'
)results.txt
$wpdb->get_result('sql query');
,这将覆盖文件中的任何现有内容。