天天看點

檔案剪切的sh腳本實作

需求描述

編寫shell腳本實作Linux下不同目錄(路徑)之間的檔案的剪切(移動)操作。

其中,檔案移動之前所在的目錄稱為源目錄,檔案移動之後所在的目錄稱為目的目錄。要求當源目錄不存在、源目錄下無檔案及剪切檔案成功時,均要在螢幕上輸出相關的日志資訊;并且,在程式執行之前,隻有源目錄是存在的,目的目錄需要由程式建立。

shell腳本

腳本說明

針對本shell腳本(命名為movefile.sh),說明如下:

第一,腳本第一行“umask 0000”表示賦予程式通路檔案的權限,因為後續要對檔案進行剪切操作,是以必須要有對檔案的操作權限才行。

第二,執行腳本的時候,要輸入兩個參數,第一個表示源檔案目錄,第二個表示目的目錄。具體到腳本中,變量$1表示源檔案目錄,變量$2表示目的目錄。

第三,本腳本的主要流程是這樣的:首先判斷源檔案目錄是否存在,如果不存在,則直接列印源目錄不存在的消息;如果存在,則擷取源目錄下的檔案數目,如果檔案數為0,那麼表示無需要剪切的檔案,那麼直接列印源目錄下無檔案的消息;如果檔案數大于0,那麼就建立目的目錄,并在目的目錄建立成功的情況下之行檔案的剪切操作。

第四,執行本腳本的指令格式為:sh movefile.sh 源檔案目錄 目的目錄。注意,兩個目錄均要以/結束。

腳本執行

将movefile.sh腳本上傳到Linux機器上,然後對它進行測試。

第一,當源檔案目錄不存在時,執行情況如下:

~>sh movefile.sh /home/zhou/movefile/srcdir/ /home/zhou/movefile/destdir/ /home/zhou/movefile/srcdir/ does notexist!!!

第二,當源檔案目錄下無檔案時,執行情況如下:

/home/zhou/movefile/srcdir/ is empty!

第三,當源檔案目錄下有1個檔案時,執行情況如下:

move 1 file(s) from /home/zhou/movefile/srcdir/ to /home/zhou/movefile/destdir/ successfully!

第四,當源檔案目錄下有10個檔案時,執行情況如下:

move 10 file(s) from /home/zhou/movefile/srcdir/ to /home/zhou/movefile/destdir/ successfully!

總結

本文中的需求,如果有進階語言(如C語言)實作,那麼代碼行數至少在100行以上,而如果有shell腳本實作,那麼僅需要20行左右的代碼即可搞定。如此可以看出,shell指令的強大,這也算是Linux給開發者帶來的一大便利。

繼續閱讀