linux 命令:find + exec
阿新 • • 發佈:2018-12-16
昨天從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 複製檔案等等。