2015-11-14 34 views
1

我的手頭有點複雜,我不得不承認我的恥辱 - 我一般都不熟悉shell腳本或linux終端,因爲我傾向於在R中工作。如何編寫一個shell腳本來計算給定文件夾中所有文件中的所有行?

所以,我想要做的是編寫一個shell腳本,按照時間順序執行以下操作:

1:確定今天的日期格式爲YYYY-MM-DD,並將其存儲爲局部變量或某些等價物。我嘗試以下:

todays-date=$(date '+%F') 

2:移動到正確的目錄,其中待計數的數據所在 - 該目錄是一樣的todays-date,並且是所有相同父目錄結構中。所以,首先,我這樣做:

cd /home/user/docs/parent/data 

然後,我遇到我的第一個問題,當我試圖用今天的數據訪問的目錄:

cd echo $todays-date 

這給了我一個錯誤,沿'沒有這樣的文件或目錄'的行。所以是的,這是問題編號1.

3:現在我想要腳本來計算位於此目錄中的所有文件中的所有行(讓我們假設我能夠訪問它)。這個文件夾中應該有24個json文件。

wc -l * 

This works great。現在我想將這些信息保存到一個文本文件中,該文件保存到我當前的工作目錄中,並按照如下方式命名:'todays-date'_wordcount.txt,因此類似於2015-11-10_wordcount.txt。恐怕我真的不知道該怎麼做。

我希望在那裏的日期作爲變量,而不只是寫出來的原因是,我打算每天運行一次這個shell腳本作爲一個cron作業,因爲我已經設置了一個自動數據收集腳本,並且這個shell腳本可以計算上次迭代中收集的數據量。如果你們能幫助我,那將是非常棒的!提前致謝。

回答

3

破折號不是變量名中的有效字符。改爲使用下劃線。

todays_date=$(date '+%F') 

,您可以直接與cd使用變量,沒有echo需要:

cd "$todays_date" 

將一個命令的輸出保存到一個文件中,使用重定向:

wc -l * > ~/"$todays_date"_wordcount.txt 
相關問題