Назад | Перейти на главную страницу

Поиск строк в файлах с относительным путем

Я не понимаю, почему эти две команды не обеспечивают одинаковый результат (разница только в относительном и абсолютном пути), может кто-нибудь объяснить это?

annika /srv/www/pages/com.example.www/www/povruc # find /srv/www/pages/com.example.www/www | xargs grep "datepicker()" 2>/dev/null 
/srv/www/pages/com.example.www/www/povruc/Application/Libraries/3rdParty/zebra/includes/Date.php:    function disable_zebra_datepicker() {
/srv/www/pages/com.example.www/www/js/functions.js:       $(".datepicker").datepicker();

против

annika /srv/www/pages/com.example.www/www/povruc # find ../ | xargs grep "datepicker()" 2>/dev/null 
../povruc/Application/Libraries/3rdParty/zebra/includes/Date.php:    function disable_zebra_datepicker() {

Во втором случае второе совпадение не найдено

ОБНОВЛЕНИЕ - доказано, что в пути нет символических ссылок:

annika /srv/www/pages/com.example.www/www/povruc # namei -ml $(readlink -f $PWD)
f: /srv/www/pages/com.example.www/www/povruc
drwxr-xr-x root       root /
drwxr-xr-x root       root srv
drwxr-xr-x root       root www
drwxr-xr-x root       root pages
drwxrwx--- Wexampl001 root com.example.www
drwxrwx--- Wexampl001 root www
drwxrwx--- Wexampl001 root povruc

По сути, это проблема; каталог, из которого вы выполняете поиск, является символической ссылкой; так относительное движение ... не приведет вас туда, где вы ожидаете; скорее к .. из $(readlink -f $PWD)

moo:~$ mkdir foo bar
moo:~$ cd bar/
moo:~/bar$ ln -s ../foo/
moo:~/bar$ touch w00t
moo:~/bar$ ls -1
foo  
w00t
moo:~/bar$ cd foo
moo:~/bar/foo$ ls -1 ../
bar
foo

классные утилиты для определения реального пути к какому-либо файлу

$ readlink -f some_name

или проверьте с помощью namei, как какой-либо путь связан, например, с

$ namei -ml /etc/passwd f: /etc/passwd drwxr-xr-x root root / drwxr-xr-x root root etc -rw-r--r-- root root passwd

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