Tôi muốn tìm một lệnh bash cho phép tôi grep mỗi tệp trong một thư mục và ghi đầu ra của grep đó vào một tệp riêng. Tôi đoán sẽ làm điều gì đó như thế này
ls -1 | xargs -I{} "grep ABC '{}' > '{}'.out"
nhưng, theo như tôi biết, xargs không thích dấu ngoặc kép. Tuy nhiên, nếu tôi loại bỏ dấu ngoặc kép, thì lệnh sẽ chuyển hướng đầu ra của toàn bộ lệnh thành một tệp có tên '{}'. Thay vì một loạt các tệp riêng lẻ.
Có ai biết một cách để làm điều này bằng cách sử dụng xargs? Tôi chỉ sử dụng kịch bản grep này làm ví dụ để minh họa vấn đề của mình với xargs vì vậy mọi giải pháp không sử dụng xargs đều không phù hợp với tôi.
xargs
mà không có-0
: điều này chỉ áp dụng khifind
đầu ra của bạn vớixargs
, phải không? Khi tôi làmxargs -a <input_file>
thế nào tôi sẽ sử dụng này? Hầu hết các lệnh nhưgrep
kết quả đầu ra với\n
và không\0.
Cách duy nhất tôi có thể nghĩ ra để làm việc xung quanh này là sử dụngtr
một lần nữa để sửa chữa mà có lẽ. Nhưng tại sao nó chỉ quan trọng để sử dụng nó với-0
?