2014-01-06 66 views
0

我試圖爲eact .prt文件創建一個.info文件。在目錄之外的文件上工作

但我需要從不同的目錄做ir,每次都需要指向一個新的目錄。

到目前爲止,我

#!/bin/bash 
DP_DATE= cat /tmp/dp_date.txt 
FOLDER= "/transfer/report_archive/preprod/$DP_DATE/" 

for f in $FOLDER 
do 
for file in *.prt 
do 
    [ -f ".info.$file" ] || wc -c < "$file" >> ".info.$file" 
done 
done 

我不知道這是否可以在所有的工作!

任何幫助,將不勝感激

+0

它爲什麼你遍歷不清楚'$ FOLDER' - 不dp_date.txt包含多個日期,或者你通過目錄* *內部'$ FOLDER'要循環? – l0b0

回答

0

您必須包裝在$()命令替換:等號後

DP_DATE=$(cat /tmp/dp_date.txt) 

空間登錄將導致空的變量,並試圖執行的第二個參數:

FOLDER="/transfer/report_archive/preprod/$DP_DATE/" 
1

=在作業後不能有空格。要分配一個命令的輸出,你必須用$(...)或反引號包裝它。

要處理在另一個目錄中的文件,最簡單的方法是在處理它之前將cd指向目錄。我在循環內的子shell中執行它,以便在處理下一個目錄之前,它將返回到原始目錄。

#!/bin/bash 
DP_DATE=$(cat /tmp/dp_date.txt) 
FOLDER="/transfer/report_archive/preprod/$DP_DATE/" 

for f in $FOLDER 
do (# Subshell so cd is temporary 
    cd "$f" 
    for file in *.prt 
    do 
     [ -f ".info.$file" ] || wc -c < "$file" >> ".info.$file" 
    done 
    ) 
done 
+0

巴馬爾這是令人難以置信的,非常感謝你,是的。 dp_date是一個臨時文件,每天都會進行更新,這些報告將進入每個日期的新文件夾。 –

相關問題