Я не понимаю, почему эти две команды не обеспечивают одинаковый результат (разница только в относительном и абсолютном пути), может кто-нибудь объяснить это?
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
Пример выше не содержит символических ссылок вдоль пути, но если бы они были, он подробно показал бы вам, каков истинный путь к некоторому файлу без безумия символических ссылок.