Bạn có thể muốn xâu chuỗi các cuộc gọi để tìm (một lần, khi bạn biết, điều đó là có thể, có thể là ngày hôm nay). Điều này, tất nhiên, chỉ có thể miễn là bạn ở lại tìm thấy. Một khi bạn chuyển sang xargs nó nằm ngoài phạm vi.
Ví dụ nhỏ, hai tệp a.lst và b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Không có mẹo ở đây - đơn giản là thực tế là cả hai đều chứa "fuddel" nhưng chỉ có một cái chứa "fiddel".
Giả sử chúng ta không biết điều đó. Chúng tôi tìm kiếm một tập tin phù hợp với 2 điều kiện:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Chà, có thể bạn biết cú pháp cho grep hoặc một chương trình khác để vượt qua cả hai chuỗi như điều kiện, nhưng đó không phải là vấn đề. Mọi chương trình có thể trả về đúng hoặc sai, được cung cấp một tệp làm đối số, có thể được sử dụng ở đây - grep chỉ là một ví dụ phổ biến.
Và lưu ý, bạn có thể làm theo tìm exec với lệnh find khác, như -ls hoặc -delete hoặc một cái gì đó tương tự. Lưu ý, việc xóa không chỉ rm (xóa tệp) mà còn rmdir (xóa thư mục).
Chuỗi như vậy được đọc dưới dạng kết hợp AND của các lệnh, miễn là không được chỉ định khác (cụ thể là với một -or
công tắc (và parens (cần che dấu))).
Vì vậy, bạn không rời khỏi chuỗi tìm kiếm, đó là một điều tiện dụng. Tôi không thấy bất kỳ lợi thế nào khi sử dụng -xargs, vì bạn phải cẩn thận trong việc truyền các tệp, đây là điều không cần làm - nó tự động xử lý chuyển từng tệp dưới dạng một đối số cho bạn.
Nếu bạn tin rằng bạn cần một số mặt nạ để tìm {} niềng răng , vui lòng truy cập câu hỏi của tôi để yêu cầu bằng chứng. Khẳng định của tôi là: Bạn không.
find
. Cảm ơn rất nhiều!