2012-01-30 55 views
0

我有一个名为Gdal的运行某些GIS命令的已安装库。如何在linux ubuntu 10.04中编写批处理命令?

单个文件

gdal_translate -a_srs EPSG:25832 INPUT_FILE OUTPUT_FILE 

,但我想贯穿所有迭代*。TIF文件所以我不必须写每个人的名字一个批处理命令(我这个命令运行已经得到了1300页的文件!)

我在sh文件尝试这样做...但它didn't工作

#!/bin/bash 

for FILE in *.tif 
do 
    BASE=$FILE .tif 
    NEWFILE=test/${BASE}.tif 
    gdal_translate -s_srs EPSG:25832 $FILE $NEWFILE 
done 

任何人都可以告诉我怎么做呢?

你,

罗伯特

+0

你是什么意思第5行的BASE = $ FILE .tif' – 2012-01-30 11:25:24

回答

1

$ FILE包括.tif扩展名。此外,BASE=$FILE .tif不符合您的想法(它在执行命令的过程中执行.tif,$ BASE设置为$ FILE)。

您也有-a_srs-s_srs之间的差异。我不知道你的意图。

最终的结果是,我认为你想用test/$FILE作为输出文件名。

#!/bin/bash 

for FILE in *.tif; do 
    gdal_translate -s_srs EPSG:25832 "$FILE" "test/$FILE" 
done 

(引号使其与空格的路径运行。把fordo在同一行正在写它来节省空间的常见方式。)

+0

imho是引用变量的最佳解决方案。 – bratkartoffel 2012-01-30 11:30:47

+0

感谢您的回复.....当我运行您的命令时我得到以下错误 - 错误4:'test/dop20_col_32608000_5798000.tif'在文件系统中不存在, 并且不被识别为受支持的数据集名称。我已经创建了777权限的目录测试。 – 2012-01-30 11:47:13

+0

也许你有错误的论点顺序或类似的东西?这听起来像是试图读取它而不是写入它。 – 2012-01-30 12:15:20

0

文件变量已经有.TIF就完了,所以你又追加的.tif。试试这个:

#!/bin/bash 

for FILE in *.tif 
do 
    NEWFILE=test/${FILE} 
    gdal_translate -s_srs EPSG:25832 $FILE $NEWFILE 
done 
+0

相同here.ERROR 4:'test/dop20_col_32608000_5802000.tif'在文件系统中不存在, 并且不被识别为受支持的数据集名称....只是为了确保我已被理解。该命令应该创建一个与旧文件名相同的新文件,但将其放在另一个文件夹(/test)...感谢您的帮助,Rob – 2012-01-30 11:52:38