Если вы дадите команде 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).