Làm thế nào để áp dụng đệ quy dos2unix cho tất cả các nội dung của một thư mục?


11

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:


18

find /path -type f -print0 | xargs -0 dos2unix --


2
Đừng lo lắng, dos2unixbỏ qua nhị phân theo mặc định.
Walf

3

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:

https://github.com/mdolidon/endlines


2

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á


Điều này đã không làm việc.
Alex Kinman

2
Hãy thật cẩn thận khi chạy nó nếu có một thư mục .git ở bất cứ đâu trong cây tập tin ... nó làm hỏng kho lưu trữ git cục bộ của tôi.
Aaron_H

1

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/*

1

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 zshyashshell (với set -o extended-globin yash), bạn sẽ làm

dos2unix **/*
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.