Một cái gì đó như sau là những gì tôi đang theo đuổi, nhưng mã của tôi không hoạt động, bất kể tôi thoát ra sao {}
và+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Sau khi xem câu hỏi Unix - & - Linux này , tôi thấy rằng đoạn mã sau hoạt động, nhưng nó không được lồng tìm như vậy và tôi nghi ngờ có một cách tốt hơn để thực hiện công việc đặc biệt này.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Có một số cách để làm tổ find -exec
mà không cần phải gọi một cái vỏ (như trên), với tất cả các trích dẫn và thoát hạn chế của nó?
Hoặc điều này có thể được thực hiện trực tiếp trong một lệnh find, sử dụng hỗn hợp nhiều tham số của nó không?
find
, nhưng nếu find
không thể làm được điều này, thì tại sao find
rất được kính trọng (?) Như tool- sử dụng để tìm tập tin? ... Tôi đã phát hiện ra rằng nó find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
hoạt động tốt trong tình huống của tôi (tài liệu tham khảo của jw013 -prune
đã dẫn tôi đến điều này trong trang man), nhưng tôi tự hỏi liệu đây có phải là một phương pháp mạnh mẽ (nói chung). Tôi chưa bao giờ thực sự sử dụng find
(trong chưa đầy một năm Linux) vì locate
đã làm gần như tất cả những gì tôi cần, vì vậy đó là lãnh thổ chưa biết.
-path
kiểm tra là chính xác những gì tôi sẽ đề nghị. Với điều này, bạn sẽ có thể làm tất cả những gì bạn muốn (xin lỗi vì hiệp hội Ace Of Base;))