我目前正在編寫一個腳本,它裝載一個samba共享,rsyncs數據到本地機器並歸檔到一個目錄結構(比如/ home/archive /)中。目前,在加入新的PDF文件,歸檔手工做這似乎是低效利用的時間Bash腳本根據
具有以下結構
ABC140003.pdf
ABC140124.pdf
.
.
ABC144201.pdf
.
ABC146012.pdf
/home/archive/
有幾個目錄2010/2011/2012,2013等
基本上,我需要分解數字以找到複製文件的正確子目錄。首先,我提取數
study_number=`echo $file | sed 's/[^0-9]//g'`
那麼一年
year=20`echo $study_number | cut -c 1-2`
上述所有PDF文件都屬於2014年的子目錄中地2014年OR任何一年目錄有以下子目錄2014/Blue/
,/ 2014/Red/and
/2014/Green /`。這對應於數字Blue(0),Red(4)和Green(6)中的第三個整數。
我在這裏使用的情況下找到我所說的學習型
type_int=`echo $study_number | cut -c 3`
case "$type_int" in
0)
type_string="Blue"
;;
4) type_string="Red"
;;
6) type_string="Green"
;;
*) echo "$date: $file has unknown study type. Do not know where to place it" >> $logfile
continue
;;
esac
我現在知道了以下文件走在下列目錄
ABC140003.pdf -> /home/archive/2014/Blue/
ABC140124.pdf -> /home/archive/2014/Blue/
.
.
ABC144201.pdf -> /home/archive/2014/Red/
.
ABC146012.pdf -> /home/archive/2014/Green/
我會很高興,如果這是目錄結構的結尾。但是,還有一層子目錄已經引入,因此沒有超過100個pdf文件的目錄(不是我的電話)。
例如/家庭/存檔/ 2014 /藍/有以下目錄: 140001-0100/ 140101-0200/ 140201-0300/ 140301-0400/ 140401-0500/ 140501-0600/
等
我現在需要想出一些邏輯使得下列文件到以下目錄
ABC140003.pdf -> /home/archive/2014/Blue/140001-0100
ABC140124.pdf -> /home/archive/2014/Blue/140100-0124
.
.
ABC144201.pdf -> /home/archive/2014/Red/144200-4300
.
ABC146012.pdf -> /home/archive/2014/Green/146000-6100
我難倒就如何在邏輯上確定研究ABC146012應該在146000-6100在一個優雅的方式,而不訴諸多個if語句每個紅/藍/綠色的/
夢幻般的,非常感謝。我對bash相當陌生,並從這個答案中學到了很多東西。我們在我們的部門中使用csh(不再) – moadeep 2014-11-05 14:36:25