2013-03-22 38 views
0

我想排除兩個目錄; vntvdone和下載,但由於某些原因,我的命令還是去那裏和其中的文件輸出:linux find prune

find -name '*.avi' -o -name '*.mkv' -o -name '*.mp4' -o -name '*.VOB' -o -path './downloading' -prune -o -path './vntvdone' -prune 

我也遇到了問題,其中如果一個文件夾/目錄已在還.MP4,它作爲一個文件也被視爲一個文件...我們如何做這個搜索只適用於文件而不是文件夾?

回答

2

我覺得它更易於使用!比使用prune。我假定find的起始路徑是'。'這個例子省略了它。

find . \(-type d -a ! -name 'downloading' -a ! -name 'vntdone' -a ! -name '.' \) -o -name \*.avi -o -name \*.mkv -o -name \*.mp4 -o -name \*.VOB 
+0

這裏是我用你的建議時,得到了:通常的Unix文件名不包含斜線(儘管路徑名做)。這意味着'-name'./下載''可能會在此係統上始終處於false狀態。你可能會發現'-wholename'測試更有用,或者'-samefile'。或者,如果您使用的是GNU grep,則可以使用'find ... -print0 | grep -FzZ'.//downloading''。 – thevoipman 2013-03-22 08:55:46

+0

抱歉 - 現在編輯答案。我測試了它 - 但使用了不同的名稱。 – suspectus 2013-03-22 09:02:32

+0

我們正在接近,但是,它仍然會返回./,並且沒有以我正在尋找的擴展名結尾的文件名...我們能不能返回./? – thevoipman 2013-03-22 09:12:59