2012-08-09 74 views
0

我有一個命令,通過查看所有我的子文件夾中的文件,但是我希望它跳過搜索文件夾,我不知道什麼是正確的方式來執行此操作:找到所有,但跳過一個文件夾

find -name '*.avi' -o -name '*.mkv' -o -name '*.mp4' -o -name '*.vob' 

我希望它不會考慮該文件夾的名稱:確保

我想:

find -name '*.avi' -o -name '*.mkv' -o -name '*.mp4' -o -name '*.vob' --skip 'secure' 

,但它不工作。

感謝您的幫助提前。

+0

如果你想要一切,但安全可能-prune可以幫助,但在高級,你必須使用awk – Efazati 2012-08-09 04:49:29

+0

find -name'* .avi'-o -name'* .mkv'-o -name'* .mp4' - o -name'* .vob'-not -iwholename'secure'這會有幫助嗎? – Efazati 2012-08-09 04:52:04

回答

6

GNU查找中沒有--skip參數。但是你可以使用-path-prune表達式來做你想做的事。語法有點奇怪:您使用-path ./secure -prune作爲術語,然後與表達式的其餘部分一起使用。所以你的情況:

find . -name '*.avi' -o [...] -o -path ./secure -prune

注意,這仍然將返回目錄./secure的結果,但裏面什麼都沒有了。

+0

這工作奇蹟!對於像我這樣擁有巨大學習曲線的人來說非常容易理解!非常感謝你! – thevoipman 2012-08-09 05:33:29

+0

我是否也可以使用它來跳過其中包含「安全」一詞的任何文件? – thevoipman 2012-08-10 05:13:58

1

以下情況如何?

find \(-name '*.avi' -o -name '*.mkv' -o -name '*.mp4' -o -name '*.vob' \) -a -not -path './secure*' 
+0

這有效,但請注意,它仍然遍歷./secure樹,拒絕所有文件和目錄。出於這個原因我喜歡-prune。 – 2012-08-09 04:48:56

+0

不僅效率更高,而且使用'-prune'似乎也是更清潔和優雅的解決方案。 – 2012-08-09 04:53:15

相關問題