Có cách nào để áp dụng dos2unixlệnh để nó chạy với tất cả các tệp trong một thư mục và đó là thư mục con không?
man dos2unixkhông hiển thị bất kỳ -rhoặc tùy chọn tương tự sẽ làm điều này thẳng tiến?
Có cách nào để áp dụng dos2unixlệnh để nó chạy với tất cả các tệp trong một thư mục và đó là thư mục con không?
man dos2unixkhông hiển thị bất kỳ -rhoặc tùy chọn tương tự sẽ làm điều này thẳng tiến?
Câu trả lời:
Bỏ qua các tệp nhị phân và các tệp ẩn rất quan trọng đối với tôi:
Điều này làm việc tốt cho tôi:
find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k
Điều này có nghĩa là: tìm tất cả các tệp không bị ẩn theo cách đệ quy trong thư mục hiện tại, sau đó sử dụng grep, liệt kê tất cả các tệp không trống (-I), sau đó chuyển nó thành xargs (được phân cách bởi dòng mới) một tệp tại một thời điểm dos2unix và giữ dấu thời gian ban đầu.
Xem thêm:
Bạn có thể sử dụng find để tìm tất cả các tệp trong cấu trúc thư mục mà bạn muốn chạy thông qua lệnh dos2unix của bạn
find /path/to/the/files -type f -exec dos2unix {} \;
Hãy xem các trang hướng dẫn để tìm, có rất nhiều tùy chọn mà bạn có thể sử dụng để chỉ định những gì được đánh giá
Sử dụng ký tự đại diện. Như thế này: (Nếu bạn đang ở trong thư mục)
dos2unix *
hoặc nếu bạn ở ngoài thư mục, hãy làm:
dos2unix /path/to/folder/*
Sử dụng bash:
shopt -s globstar
dos2unix **
Các globstartùy chọn vỏ trong bashcho phép sử dụng của **glob. Điều này hoạt động giống như *nhưng khớp với nhau /trong tên đường dẫn (do đó cũng khớp tên trong thư mục con). Điều này sẽ làm việc trong một thư mục chứa một số lượng vừa phải các tệp trong thư mục con của nó (không nhiều hàng ngàn).
Trong zshvà yashshell (với set -o extended-globin yash), bạn sẽ làm
dos2unix **/*
dos2unixbỏ qua nhị phân theo mặc định.