Если вы дадите команде find абсолютный путь, она выдаст результаты с абсолютным путем. Итак, из каталога Кена, если вы наберете:
find /home/ken/foo/ -name bar -print
(вместо относительного пути find . -name bar -print
)
Вы должны получить:
/home/ken/foo/bar
Поэтому, если вы хотите, чтобы ls -l
и он возвращал абсолютный путь, вы можете просто сказать команде find выполнить ls -l
все, что он находит.
find /home/ken/foo -name bar -exec ls -l {} ;\
ПРИМЕЧАНИЕ. Между {}
и;
Вы получите что-то вроде этого:
-rw-r--r-- 1 ken admin 181 Jan 27 15:49 /home/ken/foo/bar
Если вы не уверены, где находится файл, вы всегда можете изменить место поиска. Пока путь поиска начинается с «/», вы получите в ответ абсолютный путь. Если вы ищете место (например, /), в котором вы получите много ошибок об отказе в разрешении, я бы порекомендовал перенаправить стандартную ошибку, чтобы вы могли увидеть результаты поиска:
find / -name bar -exec ls -l {} ;\ 2> /dev/null
( 2>
это синтаксис для оболочек Borne и Bash, но он не будет работать с оболочкой C. Она может работать и в других оболочках, но я точно знаю, что она работает в Bourne и Bash).
find /home/ken/foo/bar -exec ls -ld $PWD/{} \;