Dosyaları dos satır sonlarından unix satır sonlarına yinelemeli olarak dönüştürme


11

DOS'tan UNIX'e tüm satır sonlarını dönüştürecek bir dizin ve alt dizin üzerinde çalıştırmak için kullanabileceğim bir komut arıyorum.

Bir dosyanın metin mi yoksa ikili mi olduğunu tespit edebilmelidir.

Ben yüklü dos2unixMacPorts kullanarak ama buna özyinelemeli seçeneği kaçırmak anlamına görünüyor.


Dosyanın nasıl metin veya ikili olduğunu tanımlayın?
user151019

Metin: SEKME, CR, LF hariç, 32'nin altında ASCII yok.
Max Ried

Yanıtlar:


22

Deneyin find . -name "*" -type f -exec dos2unix {} \;.


Durumda dos2unixsisteminizde mevcut değil, (aynı tasarrufu aşağıdaki komut dosyası kullanabilirsiniz dos2unixve yürütülebilir olarak ayarlanmış):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*

Bu komutu Git havuzunun kökünde çalıştırmayın yoksa deponuzu mahvedersiniz!
Nick

Ayrıca, perl -pi -e 's/\r\n|\n|\r/\n/;' $*( kaynak ) kullanarak daha iyi şansım vardı
Nick

1

İşte bir satır kabuk kodu find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;


Bir satır cevabı önerilmez. Daha fazla ayrıntı eklemeyi deneyin veya yorum yapın.
Max Ried

İlan edildiği gibi çalışır! Eklenecek başka ne var? ;-)
Taiko

2
Hm ... iyi olsa da bazı png dosyalarını bozdu. Dikkatli
Taiko
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.