OK, sau khi phàn nàn trong các ý kiến, có giải pháp tốt hơn của tôi. Trước tiên, bạn muốn biết, các tập tin bị thiếu dòng mới:
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -v 0a$" ';' -print
Không siêu nhanh (gọi một vài quy trình cho mỗi tập tin), nhưng đó là OK để sử dụng thực tế.
Bây giờ, khi bạn có nó, bạn cũng có thể thêm các dòng mới, với -exec
khác:
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -v 0a$" ';' -exec sh -c "echo >> {}" ';'
gotchas có thể:
nếu tên tập tin là xấu, ví dụ họ có không gian, bạn có thể cần tail -1 \"{}\"
. Hoặc bạn có tìm thấy đúng không?
bạn có thể muốn thêm nhiều bộ lọc để tìm, như -name \*py
hoặc các loại tương tự.
suy nghĩ về các dòng mới có thể DOS/Unix lộn xộn trước khi sử dụng (sửa lỗi đầu tiên).
EDIT:
Nếu bạn không thích các đầu ra từ các lệnh này (lặp lại một số hex), thêm -q
để grep:
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -q -v 0a$" ';' -print
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -q -v 0a$" ';' -exec sh -c "echo >> {}" ';'
Nguồn
2012-12-12 13:20:39
Không có giải pháp nào phù hợp với tôi –
Nếu bạn muốn nó theo cách đệ quy, bạn có thể hoán đổi '*' với '$ (find. -type f)' hoặc '$ (tìm -type f -name )' –
durron597