我正在尝试从托管在FTP服务器上的大型NetCDF文件中提取一个变量。一个很好的选择是使用wget逐个下载文件,使用ncks在一个新的.nc文件中获取我想要的变量,并删除原始文件。但是,原始的.nc文件很大,需要一段时间才能全部下载。
我想使用NCO的功能,使用FTP服务器上的文件作为输入文件,但我在wget cyg05*.nc中找到合适的wget cyg05*.nc翻译时遇到了困难。
下面是我感兴趣的文件夹之一:ftp://podaac.jpl.nasa.gov/allData/cygnss/preview/L1/v1.1/2017/077/
我只想跟踪实际文件名的前5个字符,而不关心其余的字符。我试过:
for i in `seq 77 1 257`;
do
if [ $i -ge 10 ] && [ $i -lt 100 ]; then
for j in `seq 1 1 8`;
do
ncks -l . ftp://podaac.jpl.nasa.gov/allData/cygnss/preview/L1/v1.1/2017/0$i/cyg0$j'......'.nc 2017_Day_0$i_Spacecraft_0$j.nc
done
fi
done我也尝试用*和??????替换*和??????,但是如果没有任何运气,文件就不会被识别。我知道NCO的帮助,特别是这一部分:http://nco.sourceforge.net/nco.html#Large-Numbers-of-Files,但我不确定我是否理解其中描述的解决方案。
我在MacOS 10.11.6。
发布于 2017-10-04 19:25:30
通配符(“*”和"?")使用NCO处理本地文件和SSH协议,而不是通过FTP协议。wget比NCO聪明,可以通过FTP协议对文件进行过滤。基本上,NCO需要知道完整的文件名才能通过FTP协议工作。所以使用wget方法可能是最简单的。即使NCO全球化通过FTP工作,它仍然会下载整个文件,因此不会比wget更快。
https://stackoverflow.com/questions/46569710
复制相似问题