我有几个目录(“amazon”、“niger”、...),其中有几个子目录(“gfdl”、“hadgem”、...),其中还有几个子目录(“rcp8p5” “,“rcp4p5”,...)。在这最后一个子目录中,我总是有两个文件夹(“historical”、“projected”),其中包含数千个具有相同框架的表。因此,我想连接这些表(存在于最后一个子目录的两个文件夹中),以便每次连接一个表时只有一个只有一个标题而不是标题的大表。有谁知道该怎么做?
我目前正在使用以下循环结构:
#!/bin/bash
# usage:cat_dat dirname
data_dir=/scratch/01/stevens/climate_scenario/river
for river in tagus
do
for gcm in gfdl-esm2m hadgem2-es
do
for scenario in rcp8p5 rcp4p5 rcp6p0 rcp2p6
do
find "${data_dir}/${river}/${gcm}/${scenario}" name \*.dat -exec cat {} + >> "${data_dir}/${river}/${gcm}/${scenario}.dat"
done
done
done
但我不能用那个摆脱标题!非常感谢任何帮助!谢谢!
awk
在单个文件夹中使用find
如果您需要当前文件夹和awk
子文件夹中的所有文件。您可以替换.
为您想要的文件夹。或者,因为getline 不好(thx @fedorqui)
例子
您可以使用
while
由find
直通过程替换提供的循环:所以它将
cat
在第一场比赛和tail -n +2
其余比赛中执行。或者,如果您将所有文件都放在同一个目录中,您可以说:
这将匹配除 when
FNR==1
和之外NR>1
的所有内容,也就是说,除了第一个文件之后的文件头之外的所有内容。为什么?因为NR
保存的是整体读取的行数,而FNR
保存的是当前正在读取的文件的行数。