2014-09-22 47 views
0

我目前正在運行一個名爲(log2csv)的Bash腳本,該腳本針對指定的.log文件運行。在所需的目錄坐在我可以輸入終端:Bash腳本僅對目錄中的新文件執行

log2csv Red1_1.log

這將創建Red1_1.csv

這是我目前的bash腳本:

#!/bin/bash 

for path 
do 
     base=$(basename "$path") 
     noext="${base/.log}" 
     /Users/joshuacarter/bin/read_scalepack.pl "$path" > "${noext}.csv" 

done 

這個腳本實際上是運行指定日誌上的perl腳本並將結果放入CSV輸出中。

我可以在終端或者運行:

log2csv *.log

這將會對運行在當前目錄中的所有.log文件的腳本,並創建的.csv文件的每一個。

我想腳本要做的只是在沒有爲他們創建.csv文件的.log文件上運行。在做了一些研究之後,我想我可以使用inotifywait來實現這個目標,但我不確定如何在腳本中完成這項工作?我也讀過,如果覆蓋文件,這可能是一個問題。任何幫助或想法將不勝感激!

回答

3

我想腳本要做的只是在沒有爲他們創建.csv文件的.log文件上運行。

簡單地跳過這些.log文件,其相應的.csv文件已經存在:

for path 
do 
     base=$(basename "$path") 
     noext="${base/.log}" 
     [ -e "${noext}.csv" ] && continue # <--------------- 
     /Users/joshuacarter/bin/read_scalepack.pl "$path" > "${noext}.csv" 
done 
+0

謝謝!這正是我需要的:) – JJcarter 2014-09-22 03:11:13

相關問題