我可以看到-prune的find
無法正常工作。我猜-name "efence*" -prune
選項應選擇(或查找)除名稱爲efence*
的文件以外的所有文件嗎?find中的-prune選項有什麼作用?
或者我錯了我的理解?
命令我執行: find * -maxdepth 0 -name "efence*" -prune
期望:在當前目錄(maxdepth 0
)只是一個名稱爲* efence表示選擇所有文件。
請幫我瞭解-prune
我可以看到-prune的find
無法正常工作。我猜-name "efence*" -prune
選項應選擇(或查找)除名稱爲efence*
的文件以外的所有文件嗎?find中的-prune選項有什麼作用?
或者我錯了我的理解?
命令我執行: find * -maxdepth 0 -name "efence*" -prune
期望:在當前目錄(maxdepth 0
)只是一個名稱爲* efence表示選擇所有文件。
請幫我瞭解-prune
嘗試
find * -maxdepth 0 -name "efence*" -prune -o -print
的prune
選項確實打印匹配的文件,如果沒有指定其他選項(但仍阻止find
遞歸到匹配的目錄,但是)。
編輯補充說明:tests
和actions
之間
find
表達式區分。從man find
:
表達是由選項(影響整體運作 而不是特定文件的處理,始終返回true), 測試(返回true或false值),和動作(其中有 副作用並返回真或假值),所有操作都由運算符分隔。假設操作員被省略的地方是
-and
。如果表達式不包含除
-prune
以外的其他操作,則對錶達式爲true的所有文件執行
所以-prune
是有副作用,就是find
不會遞歸到匹配前面的測試(在你的情況,-maxdepth 0 -name "efence*"
)的子目錄的動作。但在表達的真值方面,它相當於只是有
find * -maxdepth 0 -name "efence*" -true
因爲你沒有指定任何其他操作,則假定-print
(這個假設是始終存在的,因爲它可以讓你鍵入例如find . -name "*.java"
而不是find . -name "*.java" -print
)。
希望是有道理的。在the other thread接受的答案談論同樣的事情。
哇,它的工作! '-o print'如何做到這一點? – kingsmasher1
我接受你的回答,但請解釋我'-o print'是如何做到這一點的。 – kingsmasher1
我敢打賭你會在[超級用戶](http://superuser.com/)上得到更好的答案。 – Pindatjuh
我如何遷移?或讓管理員遷移? – kingsmasher1
是的,它將被管理員遷移。 – Pindatjuh