Nếu bạn cho lệnh find một đường dẫn tuyệt đối, nó sẽ nhổ kết quả ra với một đường dẫn tuyệt đối. Vì vậy, từ thư mục Ken nếu bạn định gõ:
find /home/ken/foo/ -name bar -print
(thay vì đường dẫn tương đối find . -name bar -print
)
Bạn sẽ nhận được:
/home/ken/foo/bar
Do đó, nếu bạn muốn ls -l
và yêu cầu nó trả về đường dẫn tuyệt đối, bạn chỉ cần nói lệnh find để thực thi ls -l
bất cứ thứ gì nó tìm thấy.
find /home/ken/foo -name bar -exec ls -l {} ;\
LƯU Ý: Có khoảng cách giữa {}
và;
Bạn sẽ nhận được một cái gì đó như thế này:
-rw-r--r-- 1 ken admin 181 Jan 27 15:49 /home/ken/foo/bar
Nếu bạn không chắc chắn vị trí của tệp, bạn luôn có thể thay đổi vị trí tìm kiếm. Miễn là đường dẫn tìm kiếm bắt đầu bằng "/", bạn sẽ nhận được đường dẫn tuyệt đối. Nếu bạn đang tìm kiếm một vị trí (như /) nơi bạn sẽ nhận được rất nhiều lỗi bị từ chối cấp phép, thì tôi khuyên bạn nên chuyển hướng lỗi tiêu chuẩn để bạn thực sự có thể thấy kết quả tìm thấy:
find / -name bar -exec ls -l {} ;\ 2> /dev/null
( 2>
là cú pháp của shell Borne và Bash, nhưng sẽ không hoạt động với shell C. Nó cũng có thể hoạt động trong các shell khác, nhưng tôi chỉ biết chắc chắn rằng nó hoạt động trong Bourne và Bash).
find /home/ken/foo/bar -exec ls -ld $PWD/{} \;