Bạn chỉ đơn giản là thiếu vị ngữ nói những gì bạn đang tìm kiếm (ví dụ -name
.)
Để tìm trong thư mục nhà theo tên:
find ~ -name \*.pdf
Lưu ý rằng ký tự đại diện *
phải được thoát ra để lớp vỏ không diễn giải nó trước khi tìm được bàn tay của nó. Sử dụng '*.pdf'
và "*.pdf"
sẽ có tác dụng tương tự như \*.pdf
.
Để tìm trường hợp không nhạy cảm:
find ~ -iname \*.pdf
Để chỉ cắt các kết quả thành các tệp (biểu thức tên có thể sẽ đảm nhiệm việc này cho bạn, nhưng chỉ trong trường hợp bạn có bất kỳ thư mục có tên kỳ lạ nào):
find ~ -type f -iname \*.pdf
Để đảm bảo tìm thấy sau các liên kết tượng trưng (tôi thường muốn tự làm điều này khi thực hiện tìm kiếm):
find ~ -follow -type f -iname \*.pdf
Để thực hiện điều gì đó với các tệp bạn đã tìm thấy: bạn có thể kết xuất tệp này vào tệp bằng cách sử dụng chuyển hướng xuất chuẩn (ví dụ: giải quyết > filename
ở cuối) hoặc sử dụng -exec
tùy chọn để chạy lệnh (xem trang man để biết chi tiết). Cái sau chạy một lệnh trên mỗi tệp tại một thời điểm, mặc dù. thường nhanh hơn khi để xargs
lệnh chuyển các tệp tìm thấy của bạn dưới dạng đối số sang lệnh khác, tất cả cùng một lúc hoặc khối lớn tại một thời điểm. Ví dụ: đối với các greps ad-hoc (nhưng không được lập trình) thông qua các tệp tiêu đề:
find ~ -follow -type f -name \*.h | xargs grep -nH "identifier"
Và một phần mở rộng cuối cùng, để làm cho lệnh cuối cùng đó hoạt động chính xác nếu bạn có tệp và thư mục có khoảng trắng trong đó:
find ~ -follow -type f -name \*.h -print0 | xargs -0 grep -nH "identifier"
find
là xa vô dụng.