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' .
рекурсивный цифровой поиск