在備份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目錄,其中包含了很多原始碼資訊。不出...