shell批量以日期重新命名檔案

來源:互聯網
上載者:User

在很多服務日誌的情況下,或者有很多零散的檔案要批量整理到一起時,通過shell指令碼能很快解決:

DATE=$(date +%Y_%m_%d-%H%M%S); find * -type f | while read file; do mv $file ${file}.${DATE}; done

以上語句能快速找出目錄下所有檔案,並重新命名。 

那麼如果要找出指定尾碼的檔案,並重新命名該如何操作呢?為了更好的理解,下面來把代碼分開執行:

 

find ./log -name "*.log" | while read filedoDATE=$(date +%Y%m%d_%H%M%S_%N)mv $file ./temp_log/${DATE}.logdone

 

第一行語句:找出當前log目錄下的所有以*.log為尾碼的檔案。

第三行語句:把目前時間變數匯入DATE變數(產生一個隨機數)。

第四行語句:移動並重新命名尋找到的檔案。

下面再解釋一下date變數:

%Y 年份

%m 月份

%d 日期

%H 小時

%M 分鐘

%S 秒

%s 獲得時間戳記,當前到:1970-01-01 00:00:00 相隔的秒數

%N 獲得目前時間的納秒資料,精確到億分之一秒

所以,我們可以看出DATE=$(date +%Y%m%d_%H%M%S_%N)變數輸出的基本上算是一個隨機數,因為在CPU執行時%N很難出現相同結果。如此一來,在重新命名的時候就不會產生檔案覆蓋的情況。

關於隨機數的產生還有一個系統變數$RANDOM:

比如在終端輸入:echo $RANDOM

傳回值為:26885

我們還可以為它進行md5加密:echo $RANDOM|md5sum

傳回值:5ebc600b4d19e86719a491d7dd365880

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.