Có cách nào để áp dụng dos2unix
lệ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 dos2unix
không hiển thị bất kỳ -r
hoặ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 dos2unix
lệ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 dos2unix
không hiển thị bất kỳ -r
hoặ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 globstar
tùy chọn vỏ trong bash
cho 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 zsh
và yash
shell (với set -o extended-glob
in yash
), bạn sẽ làm
dos2unix **/*
dos2unix
bỏ qua nhị phân theo mặc định.