1. 程式人生 > >linux 命令:find + exec

linux 命令:find + exec

昨天從git 上clone一份solution下來,由於solution本身是VS2005的,然後我用VS2015開啟後,這樣每個子工程底下都會主動產生一個*.vcxproj的檔案(vs2015的工程檔案)。接下來我想切換程式碼分支,但是git提示,必須提交或者刪除所有的.vcxproj才可以。使用find命令查詢.vcxproj結尾的檔案:

find ./ -type f -name "*.vcxproj"

結果是輸出了十幾個工程目錄底下都有.vcxproj結尾的檔案。一個一個刪除實在是麻煩。這時候find + exec就派上用場了,先上解決方案再解釋:

find ./ -type f -name "*.vcxproj" -exec rm {} \;

使用上述命令就可以將當前目錄及子目錄下所有的以.vcxproj結尾的檔案全部找出並且刪除。

find + exec 解釋

find ./ -type f -name "*.vcxproj"

在上述命令中,./指的是當前的搜尋目錄,-type f指的是搜尋檔案,-name "*.vcxproj"指的是搜尋以.vcxproj結尾的檔案。這個命令會遞迴查找出當前目錄和字目錄下的所有檔案。如果你只要查詢當前資料夾不查詢子資料夾的話可以加個搜尋深度,如只搜尋當前的目錄(不包含子目錄):

find ./ -maxdepth 1 -type f -name "*.vcxproj"

-exec rm {} \;

-exec後面跟的是command命令,這個命令是以‘;’作為結束標誌的,所以分號是不可缺少的。考慮到各個系統中分號會有不用的意義,所以前面加反斜槓。

{}花括號代表前面find找出來的檔名

find結合exec和command非常好用,command可以用例如ls -l列出檔案詳情; mv 移動檔案;grep 搜尋檔案中的字串;cp 複製檔案等等。