Find не находит рекурсивно

Я в папке "home", и я запускаю эту команду

find . -iname *.mov

и он производит

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

Теперь я "cd.." и запускаю ту же команду

find . -iname *.mov

На этот раз "Intro.mov" не является результатом. Каковы причины этого? И какова команда поиска рекурсивно для каждого файла, заканчивающегося ".mov" в текущем каталоге? Спасибо.

Ответ 1

При использовании подстановочного знака в аргументе он расширяется оболочкой. Чтобы предотвратить это, вам нужно написать "*.mov".

В вашем случае оболочка расширяется до любых файлов, которые он находит до, передавая аргумент для поиска, который затем получает список файлов и не будет искать по исходному шаблону.

Ответ 2

Вам может потребоваться добавить -follow, если ваш домашний каталог на самом деле символическая ссылка. Также укажите шаблон, иначе оболочка попытается его расширить, прежде чем передать его в find.

find . -iname "*.mov" -follow

Ответ 3

Я еще не могу прокомментировать, поэтому я отправлю это как ответ (мои извинения заранее).

Пожалуйста, ознакомьтесь с этим сообщением "find: пути должны предшествовать выражению:" Как указать рекурсивный поиск, который также находит файлы в текущем каталоге?

И дополнительная информация, которая может вам пригодиться: Чтобы рекурсивно найти файл с определенным именем в вашем текущем каталоге, вы можете использовать grep или find

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/

Ответ 4

Я бы использовал:

 grep -rn 'mov' .

рекурсивный цифровой поиск