2012-01-30 164 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