如何cp目錄時忽略指定的目錄和檔案

2021-06-22 05:13:54 字數 942 閱讀 6693

在備份ltedecoder程式時,需要把此目錄拷由到bak目錄下,但decoder目錄下有個大檔案,不需要備份,還有日誌問題,也不需要備份,如何實現呢??

方法: 

cd /source-dir

find . -name .snapshot-prune-o

-print0 | cpio -pmd0 /dest-dir

此段的意思是:當找到name為.snapshot時,prune就會返回真,-o是或的意思,「或」的使用技巧是當左邊的表示式為「真」時,則不會運算右邊的表示式,當左邊的表示式為假,則運算右邊的表示式,即,當左邊name不為.snapshot,則進行右邊的表示式,右邊的表示式意思是print檔名(包括路徑的);當找到name為.snapshot時,則不列印檔案名,這樣就實現了把非.snampshot為命名的檔案列印出來並交給cpio進行處理,cpio則把這些檔案拷則的dest-dir中,實現忽略.snampshot檔案的拷備(注:檔案指資料夾或file名)。

拓展:

-prune -o ... -print0

「... -print0」

這裡可以使用find的查詢檔案的引數,如-name,-size等。

find . -name persistence -prune -o  ! -name '*log*'  ! -size +100m -print0   | cpio -pmd0 /root/do_bak/ltedecoder

上面則不僅忽略persistence目錄,還會忽略包涵log的檔案或資料夾,還會忽略大於100m的檔案。

注意: 你一定注意到了find 後面是「.」,代表當前目錄,即此命令必須是pwd是你要拷則的目錄裡面,如你把sour-dir的檔案進行拷則,則需要先cd $sour-dir。

Linux 忽略目錄結構cp

命令 find a print0 xargs 0 i cp dist首先find a會列出a資料夾下所有檔案到標準輸出,xargs會把標準輸出的內容作為引數傳給後面的命令,此處為查詢到的所有檔案,i引數指定代替標準輸出字串,後面用此字串確定傳過來的引數的位置。最後執行cp find輸出的內容 dis...

SVN 更新時忽略指定檔案或目錄

svn 更新時忽略指定資料夾 用於在本地更新時,忽略svn伺服器中專案中的指定檔案 夾 命令列可以這麼來 svn update set depth exclude 資料夾 那麼tortoisesvn客戶端呢?在資料夾右鍵中的 更新至版本 u 更新深度選 排除 在版本瀏覽器中去掉指定的目錄,確定,搞定...

grep 如何忽略 svn 目錄

grep如何忽略.svn目錄,以及如何忽略多個目錄 grep r function name 表示當前目錄下所有檔案,r表示遞迴查詢,使用的模式較為簡單,僅作參考 由於現在的很多專案都使用subversion作為版本管理工具,因此每個原始碼目錄下都會有乙個.svn目錄,其中包含了很多原始碼資訊。不出...