2013-04-10 33 views
10

我在目錄下的「家」是,我運行此命令找到沒有找到遞歸

find . -iname *.mov 

和它產生

./root/movies/Corey/holtorf/Intro.mov 

現在,我「CD ..」並運行相同命令

find . -iname *.mov 

這次「Intro.mov」不在結果中。 這背後的原因是什麼? 什麼是遞歸搜索當前目錄中以「.mov」結尾的每個文件的命令?謝謝。

回答

20

在參數中使用通配符時,它由shell進行擴展。爲了防止這種情況,您需要編寫「* .mov」。

在你的情況下,外殼擴展到它找到的任何文件之前傳遞參數來查找,然後獲取文件的列表,並將不會基於原始模式進行搜索。

16

如果您的主目錄實際上是符號鏈接,則可能需要添加-follow。另外引用該模式,否則shell會在將它傳遞到find之前嘗試擴展它。

find . -iname "*.mov" -follow 
4

我還不能評論,所以我會張貼這個答案(我提前道歉)。

請看看這篇文章"find: paths must precede expression:" How do I specify a recursive search that also finds files in the current directory?

和附加信息,可能有利於你: 要遞歸找到在當前目錄特定名稱的文件時,您可以使用grep的或發現

grep -r "*.mov" . 

或不區分大小寫的搜索

grep -ri "*.mov" . 

並找到

find . -type f -exec grep -l "*.mov" {} + 

也是一個有用的鏈接http://www.cyberciti.biz/faq/howto-recursively-search-all-files-for-words/

1

我會用:

grep -rn 'mov' . 

遞歸數字搜索