find не находит текст в файле, пока не укажешь прямо путь к его папке (что не так с командой?)

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

vkapas
Сообщения: 188
ОС: Ubuntu 14.04, 16.04

find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение vkapas » 21.06.2014 21:09

Была задача: найти на сервере файл в котором содержится текст class="productPrice". Из корня CMS я запустил

Код: Выделить всё

find ./ -type f -print | xargs egrep -i "class=\"productPrice\""

но find ничего не нашёл. Что странно — я точно знал, что этот код есть в одном из файлов на сервере.

Позже я всё-таки нашёл нужный мне файл и его директорию (уже с помощью Гугла) и просто ради эксперимента запустил ту же команду, но уже находясь в искомой директории. И в этот раз find нашёл нужный мне файл.

Не пойму: почему find не находит файл в первом случае, но находит во втором?

P.S. Файл находится в /public_html/components/com_virtuemart/themes/default/templates/common. В первом случае поиск осуществлялся из /public_html.
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение /dev/random » 21.06.2014 21:13

vkapas писал(а):
21.06.2014 21:09
...
Не пойму: почему find не находит файл в первом случае, но находит во втором?

P.S. Файл находится в /public_html/components/com_virtuemart/themes/default/templates/common. В первом случае поиск осуществлялся из /public_html.

Там симлинков среди компонентов пути нет?
Спасибо сказали:

vkapas
Сообщения: 188
ОС: Ubuntu 14.04, 16.04

Re: find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение vkapas » 21.06.2014 21:34

Нет, по пути к искомому файлу простые директории. На сервере самая обычная старая Joomla 1.5.
Спасибо сказали:

Аватара пользователя
nerve
Сообщения: 267
ОС: OpenBSD

Re: find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение nerve » 22.06.2014 00:53

может по пути к файлу не хватает разрешений?
Спасибо сказали:

Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение yars » 22.06.2014 12:18

А зачем тут find? Достаточно же grep с ключом -R, если есть симлинки, и -r, если их нет. Не?
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:

vkapas
Сообщения: 188
ОС: Ubuntu 14.04, 16.04

Re: find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение vkapas » 22.06.2014 14:31

nerve, с правами тоже всё в порядке. Абсолютно у всех директорий по пути к файлу права drwxr-xr-x, а владелец — пользователь, от имени которого я запускаю команду.


yars, попробовал команду с ключом r/R — та же фигня, файл не находит. Мистика.
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4666
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение SLEDopit » 22.06.2014 14:39

vkapas писал(а):
21.06.2014 21:34
Нет, по пути к искомому файлу простые директории.
А сам public_html -- это не симлинк? покажите вывод, чтобы не гадать на кофейной гуще:

Код: Выделить всё

ls -ld public_html
ls -ld public_html/components
ls -ld public_html/components/com_virtuemart
ls -ld public_html/components/com_virtuemart/themes
ls -ld public_html/components/com_virtuemart/themes/default
ls -ld public_html/components/com_virtuemart/themes/default/templates
ls -ld public_html/components/com_virtuemart/themes/default/templates/common

vkapas писал(а):
22.06.2014 14:31
yars, попробовал команду с ключом r/R — та же фигня, файл не находит. Мистика.
-R нужено не после xrags'a ставить, а вообще без find'a:

Код: Выделить всё

grep -Rl "class=\"productPrice\"" .


зы. либо используйте -L опцию у find'a.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

vkapas
Сообщения: 188
ОС: Ubuntu 14.04, 16.04

Re: find не находит текст в файле, пока не укажешь прямо путь к его папке

Сообщение vkapas » 22.06.2014 20:34

Благодарю.

Код: Выделить всё

grep -Rl "class=\"productPrice\"" ./

нашёл то, что было нужно без указания директории.

А ключ -L, кстати, find'у не помог.

Нет, public_html не симлинк. Вывод команд:

Код: Выделить всё

drwxr-xr-x 21 user customers 4096 May 24 01:09 public_html
drwxr-xr-x 21 user customers 4096 May 23 23:15 public_html/components
drwxr-xr-x 5 user customers 4096 May 30 21:32 public_html/components/com_virtuemart
drwxr-xr-x 3 user customers 4096 Nov 20  2011 public_html/components/com_virtuemart/themes
drwxr-xr-x 5 user customers 4096 Jun 22  2012 public_html/components/com_virtuemart/themes/default
drwxr-xr-x 10 user customers 4096 Jun 27  2012 public_html/components/com_virtuemart/themes/default/templates
drwxr-xr-x 2 user customers 4096 Jun 21 21:50 public_html/components/com_virtuemart/themes/default/templates/common
Спасибо сказали: