循环文件以执行 ncdump?

For Loop Over Files to Perform ncdump?

似乎找不到可靠的类似问题。简而言之,我只是想对多个文件执行一个操作,但我很难处理 for 循环。我想一次 ncdump 多个文件并将输出存储在单独的文件中。这是我到目前为止所拥有的。

#!/bin/bash

date='20160503'

dump1Dir=/server1/applications/VAL/gran_files

cd $dump1Dir
filelist=`ls *s$date*`

for i in $filelist do
ncdump $filelist > dumpfile[i]
done

我认为你想要的是这样的:

for file in *s$date*.nc; do ncdump "$file" > "${file%.nc}.cdf"; done

但这包括一堆假设。

它将做的是:

  • 查找名称以扩展名 .nc 结尾并包含 s 后跟变量值 $date
  • 的所有文件
  • 对于每个这样的文件,使用 ncdump 创建一个同名文件,将扩展名从 nc 更改为 cdf

这也应该有效(假设源文件的扩展名为 .nc,输出使用的是 .cdf)

cd $dump1Dir
ls -1 *s$date*.nc | while read file; do ncdump "$file" > "${file%.nc}.cdf"; done