您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“如何使用Bash Shell對目錄中的文件實(shí)現(xiàn)遞歸式拷貝”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
前言
今天工作中遇到了一個問題,如果將目錄A中的文件拷貝到目錄B中(前提目錄B沒有該文件),并保持文件在目錄A的結(jié)構(gòu)。項(xiàng)目重點(diǎn)如下:
需要在目錄B中保持文件在目錄A中的結(jié)構(gòu)。假設(shè)A目錄文件 A/test/1.txt,轉(zhuǎn)移到目錄B中應(yīng)該是B/test/1.txt。同時還需要考慮目錄B中是否存在test目錄,多級目錄就要考慮遞歸了。(還好,bash shell里寫個目錄遞歸遍歷還是比較簡單的。)
需要考慮A中文件是否在B中已經(jīng)存在同名文件,如果存在,則不需要拷貝。
項(xiàng)目需求示例圖如下:
實(shí)現(xiàn)
項(xiàng)目需求有了,知道設(shè)計到遞歸,代碼就很好寫了。這里給出一個demo示例,供大家參考。
#!/bin/bash function recursive_copy_file() { dirlist=$(ls $1) for name in ${dirlist[*]} do if [ -f $1/$name ]; then # 如果是文件,并且$2不存在該文件,則直接copy if [ ! -f $2/$name ]; then cp $1/$name $2/$name fi elif [ -d $1/$name ]; then # 如果是目錄,并且$2不存在該目錄,則先創(chuàng)建目錄 if [ ! -d $2/$name ]; then mkdir -p $2/$name fi # 遞歸拷貝 recursive_copy_file $1/$name $2/$name fi done } source_dir="/tmp/test/system" dest_dir="/tmp/test/systemback" recursive_copy_file $source_dir $dest_dir
“如何使用Bash Shell對目錄中的文件實(shí)現(xiàn)遞歸式拷貝”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。