2013-07-31 26 views
1

我想創建一個簡單的腳本來從命令行記筆記。文件名稱應包含每個音符的編號和創建日期。像這樣:Bash:如何在同一文件夾中的前一個文件的數字標識後命名一個文件?

01_20130711.txt 
02_20130722.txt 
03_20130731.txt 
... 

因此,音符數字應該從我輸入的最後一個音符開始向上計數。另外,當notes文件夾爲空時,在那裏創建的第一個文件應該獲得01作爲它的編號。

我該如何完成這種自動計算?

+0

我閱讀[this](http://www.unix.com/302440347-post3.html)並試驗了'echo $ {name} $((num + 1))',但有問題用'BASH_REMATCH'。公平的批評,但。 – marttt

回答

3
set *.txt 
[[ ${*: -1} =~ [0-9]+ ]] 
printf -v next '%02d_%d.txt' $((BASH_REMATCH + 1)) $(date +%Y%m%d) 
touch $next 
+1

謝謝!這解釋了我使用'BASH_REMATCH'時遇到的一些問題。對於像我這樣的n00bs的附加說明:添加'cat> $ next'作爲最後一行,並且你將有一個工作的「應用程序」。 – marttt

+3

請注意,BASH_REMATCH實際上是一個數組。在沒有索引的情況下引用它相當於'$ {BASH_REMATCH [0]}',即只有第一個元素,在這種情況下,它就是你所需要的。數組的後續元素將包含捕獲括號的內容,例如:[['abc'=〜(。)(。)(。)]] && echo $ {BASH_REMATCH [3]}'outputs「c」 –

+0

@ glennjackman謝謝,很好的解釋;這是我所遇到的問題之一,並且我在我對最初問題的評論中將另一個例子聯繫起來。 – marttt

0

嘗試

lastfile = `ls -lrth | tail -n 1` 
lastnumber = `echo $lastfile | awk -F"_" '{print $1}'` 

要獲得最後一個節點的數量。我認爲腳本的其餘部分現在已經很清楚了。

+2

http://mywiki.wooledge.org/ParsingLs –

+0

謝謝你,這是一個有趣的選擇,但我更喜歡Steven Penny的解決方案,因爲它解釋了我自己的問題。另外@StevenPenny謝謝你的鏈接,非常有用! – marttt

相關問題