shell 檔案拷貝

2021-06-26 09:16:52 字數 1902 閱讀 6877

有個應用場景如下:目前有一套網盤系統的檔案儲存是在windows下按照目錄結構按實際檔名稱儲存的,現在需要將該系統的檔案遷移到linux系統中,且檔案都儲存在乙個目錄下,該目錄不再包含子目錄,目前乙個解決方案是使用shell指令碼來進行簡單處理。

##原檔案目錄,需要解析的檔案目錄

resourcepath="/home/hsinghsu/new"

##將原檔案拷貝到的目錄,將檔案統一拷貝到該目錄

topath="/home/hsinghsu/to"

##原系統檔案上傳的路徑,用於拼接原檔案在原系統中的絕對路徑

resourceflag="d://upload"

##原檔案在linux系統的字首,用於拼接原檔案在原系統中的絕對路徑

resourcepre="/home/hsinghsu/new"

##生成匯出檔案txt

exporttxt="/home/hsinghsu/export.txt"

##resourcepre值的長度

resourcelength=$

##echo $resourcelength

#獲得隨機數返回值,用於生成新的檔名

function random()

##在txt中列印標頭

echo -e "原檔名\t新檔名\t原檔案路徑\t新檔案路徑">>$exporttxt

##解析檔案拷貝檔案函式

function copyfiles()

##原始檔案在原系統中的目錄結構

oldfilepath=$resourceflag$tmpfilepath

tfile=$filename;

##拷貝後的檔名,不含字尾,不含/

oldfilename=$

##拷貝後的檔案字尾,不含.

oldfilenameext=$

##echo "oldfilename:$oldfilename"

##echo "oldfilenameext:$oldfilenameext"

##新檔名,通過隨機數生成19位的數字

newfilename=$(random)

##echo "newfilename:$newfilename"

##將生成的檔名稱寫入匯出日誌檔案中,列印的內容:原檔名\t新檔名\t原檔案路徑\t新檔案路徑

echo -e "$filename\t$newfilename.$oldfilenameext\t$oldfilepath\t$topath/$newfilename.$oldfilenameext">>$exporttxt

##將原檔案複製在制定的目錄下

cp $resourcepath/$filename $topath/$newfilename.$oldfilenameext

##判斷是否是目錄

elif [ -d $filename ] ; then

##echo "this is a dict,dict name is $filename ,dict:`pwd`/$filename"

cd $filename

resourcepath=`pwd`

##對目錄遞迴執行copyfiles

copyfiles

resourcepath=`dirname $resourcepath`

cd $resourcepath

##else

##echo "$resourcepath/$filename is not a common file.please check."

fidone

}cd $resourcepath

copyfiles

echo "all done"

執行後最後會生成日誌檔案,檔案內容顯示:原檔名\t新檔名\t原檔案路徑\t新檔案路徑 

shell指令碼實現檔案遠端拷貝scp

場景 將a伺服器上面的cc.jar包,複製到b伺服器上面 實現方法1 1 寫指令碼cp.sh 內容為 bin bash ip 1 注釋 這裡引數化了目標伺服器的ip,執行指令碼時候將引數加在後面 scp.exp cc.jar root 1 root tools 寫完後給許可權 chmod 777 c...

Linux使用shell指令碼批量拷貝檔案

在日常工作中我們經常會碰到在linux下匯出檔案的工作,如果挨個拷貝就很麻煩也很不方便。usr bin env bash file name.txt for state in cat file doecho visit beautiful state done usr bin env bash ec...

shell 遞迴函式 迴圈拷貝檔案到指定目錄

功能 如題 bin sh recursive cd tmp mkdir update tar zxvf update.tgz c update chmod r 755 tmp update rootdir tmp update filelist ls tmp update for file in f...