1. 程式人生 > >在macos系統下遞迴刪除檔案或目錄…

在macos系統下遞迴刪除檔案或目錄…

今天想刪除.svn用git做版本管理,因為只有自己一個人,用.svn太麻煩,發現git還好用,特別是對個人而然。但是要刪除.svn真的很麻煩,特別是在macos下,檔案都是隱藏的,要開啟隱藏比較麻煩。

注意:需要開啟終端,輸入sudo -s,並輸入密碼,才能看到隱藏檔案。

如果用svn管理程式碼時,會發現專案目錄會有.git隱藏檔案,這個檔案會影響svn的使用。必須先刪除後才可正常使用svn。即時上傳後發現遠端伺服器上有.git檔案,也可在本地刪除.git,然後commit,來刪除伺服器的.git檔案。

# 刪除當前目錄下所有 .git 檔案

 find . -name .git|xargs rm -rf

linux與macos是相通的找幾條linux命令就可以刪除。命令如下。

不過刪除前最好看一下是否是想刪除的東西。

# 刪除當前目錄下所有 .svn 檔案

 find . -name .svn|xargs rm -rf

格式很簡單,如下:

find 目錄 -name 名稱|xargs rm -rf

查詢你要刪除的資料夾或者檔案,然後刪除即可。

但是在macos下有一個問題,資料夾中有空格是不能刪除的。

網上找的具體解說。

xargs – build and execute command lines from standard input

在使用find命令的-exec選項處理匹配到的檔案時, find命令將所有匹配到的檔案一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是“引數列太長”或“引數列溢位”。這就是xargs命令的用處所在,特別是與find命令一起使用。

find命令把匹配到的檔案傳遞給xargs命令,而xargs命令每次只獲取一部分檔案而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分檔案,然後是下一批,並如此繼續下去。

在有些系統中,使用-exec選項會為處理每一個匹配到的檔案而發起一個相應的程序,並非將匹配到的檔案全部作為引數一次執行;這樣在有些情況下就會出現程序過多,系統性能下降的問題,因而效率不高;

而使用xargs命令則只有一個程序。另外,在使用xargs命令時,究竟是一次獲取所有的引數,還是分批取得引數,以及每一次獲取引數的數目都會根據該命令的選項及系統核心中相應的可調引數來確定。

來看看xargs命令是如何同find命令一起使用的,並給出一些例子。

其他的刪除方法:

在linux下沒有類似DOS下 del/s *.dep 的遞迴刪除命令,不知道是不是我還沒有找到合適的命令用法,為這個在DOS下非常容易的小問題我搜索了一下,發現這個問題是用find和rm命令組合實現的,因此還搜尋了find的語法,因為find --help給出的說明太簡單,根本無法看懂。

下面是實現的方法,不過刪除前最好看一下是否是想刪除的東西。

# 刪除當前目錄下所有 dep 檔案

find . -name *.dep -type f -exec rm -f {} \;

# 刪除當前目錄下所有 linux64GccDPOpt 目錄(包括裡面的檔案)

find . -name "linux64GccDPOpt" -type d -exec rm -rf {} \;

刪除目錄的命令提示:

find: ./Make/linux64GccDPOpt: No such file or directory