Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
@Lex Гость
|
Добавлено: Чт Ноя 27 2003 20:45 Заголовок сообщения: Рекурсивный поиск командой find ? |
|
|
Как сделать (какой использовать ключ), чтоб команда find искала не только в текущей директории, но и во всех поддиректориях? |
|
Вернуться к началу |
|
 |
Dmitry.Karpov http://prof Гость
|
Добавлено: Чт Ноя 27 2003 20:47 Заголовок сообщения: Она так и делает (должна делать). А как ты её запускаешь? (-) |
|
|
- |
|
Вернуться к началу |
|
 |
@Lex Гость
|
Добавлено: Чт Ноя 27 2003 20:51 Заголовок сообщения: Re: Она так и делает (должна делать). А как ты её запускаешь? (-) |
|
|
Например так find *.shtml |
|
Вернуться к началу |
|
 |
Dmitry.Karpov http://prof Гость
|
Добавлено: Чт Ноя 27 2003 20:53 Заголовок сообщения: А мануал почитать? find . -name '*.shtml' Ты хоть знаешь, какие аргументы получает find в твоём случае, что звездатые шаблоны р |
|
|
- |
|
Вернуться к началу |
|
 |
@Lex Гость
|
Добавлено: Чт Ноя 27 2003 20:58 Заголовок сообщения: Блин, скажи как найти все файлы с расширением shtml (например) в текущей и во всех поддиректориях pls |
|
|
А то мне это только и надо и ради этого лезть в мануалы влом когда есть люди кот могут посказать  |
|
Вернуться к началу |
|
 |
@Lex Гость
|
Добавлено: Чт Ноя 27 2003 21:04 Заголовок сообщения: Re: А мануал почитать? find . -name '*.shtml' Ты хоть знаешь, какие аргументы получает find в твоём случае, что звездатые шабло |
|
|
К слову. find *.shtml в текущей директории все очень здорово находит, а вот в поддиректории не заглядывает |
|
Вернуться к началу |
|
 |
Dmitry.Karpov http://prof Гость
|
Добавлено: Чт Ноя 27 2003 22:11 Заголовок сообщения: А ты мой ответ читал? |
|
|
Повторяю ещё раз: find . -name '*.shtml' (обрати внимание на апострофы).
То, что делалось в твоём варианте, было эквивалентно echo *.shtml |
|
Вернуться к началу |
|
 |
ryabinkin Гость
|
Добавлено: Пт Ноя 28 2003 19:22 Заголовок сообщения: Вы собеседника слушаете? А понимаете? |
|
|
Господин @Lex! Вам ясно и недвусмысленно сказали, что Вы делаете ошибку. Вы тупите и не хотите включить мозги. Тогда я возьму на себя труд помочь Вам. Команда find -name *.shtml выполняется следующим образом: сначала интерпретатор команд (например, bash) вместо шаблона *.shtml подставляет список, сформированнй в результате поиска в ТЕКУЩЕМ каталоге всех файлов, с именем, удовлетворяющем шаблону; затем этот список передается программе find. Естественно, если в Ваших подкаталогах нет файлов с такими именами, Вы будете думать, что find не выполнил рекурсивный поиск. Фактически, Вы воспользовались командой, полностью аналогичной echo *.shtml с единственным исключением, что она найдет также файлы с теми же именами и подкаталогах. Для того, чтобы избежать подобной (нетривиальной!) ошибки, следуйте указаниям: либо find -name \*.shtml либо find -name '*.shtml' как Вам и было указано. |
|
Вернуться к началу |
|
 |
ryabinkin Гость
|
Добавлено: Пт Ноя 28 2003 19:32 Заголовок сообщения: Блин, текущий каталог '.' забыл. Сорри(-) |
|
|
. |
|
Вернуться к началу |
|
 |
Dmitry.Karpov http://prof Гость
|
Добавлено: Сб Ноя 29 2003 10:57 Заголовок сообщения: Правильно говорит товарищ! |
|
|
Есть одно правило, которое я советую всем соблюдать не думая: Шаблоны поиска/замены в командах grep/sed и маска для поиска файлов в команде find должны без раздумий браться в апострофы как только там есть что-то кроме букв, цифр, точки и минуса. Время на установку апострофов гораздо меньше, чем время на размышление, стОит ли их ставить. Апострофы нужны потому, что двойнфе кавычки не экранируют доллар и обратные кавычки.
Ну и надо было почитать 'man find' на тему того, что первый аргумент = директория, от которой ведётся поиск. Кстати, я так и не нашёл, можно ли заставить find искать в нескольких директориях; задача была такая: я знаю, что где-то в директориях, перечисленных в $PATH, есть нужный мне файл, но я не помню, как он точно называется. Тогда я нашёл вручную, а потом было лень. Но если кто знает - было бы интересно. |
|
Вернуться к началу |
|
 |
repin777 Гость
|
Добавлено: Вс Ноя 30 2003 19:47 Заголовок сообщения: вот так |
|
|
рекурсивно ищет файл или дир. mc начиная от /
find / -name mc |
|
Вернуться к началу |
|
 |
|