選擇性地將 LF 更正為 CRLF

選擇性地將 LF 更正為 CRLF

鑑於:

  • 一個大目錄樹,包含以下內容的混合:
    • 帶有 LF 行結尾的文件
    • 帶有 CRLF 行結尾的文件
    • LF 和 CRLF 行結尾奇怪混合的檔案(由於錯誤)
    • 二進位檔案
    • 即使損壞我也不想碰的其他文件
  • 可能包含空格的路徑

我的目標是保留僅 LF 和僅 CRLF 文件,並將混合文件轉換為僅 CRLF 文件,同時也保留最後兩組。

這個咒語的作用是:

find . (some conditions to exclude stuff I don't want to mess with) |
    xargs -d '\n' unix2dos -ic | cut -c 3- |
    xargs -d '\n' dos2unix -ic | cut -c 3- |
    xargs -d '\n' unix2dos

但現在我很好奇是否有更好/更有效的方法來做到這一點。 (僅使用標準 shell 工具,而非 Perl/Python/等)

FWIW,第一個unix2dos -ic是將初始列表過濾為僅包含 CRLF 的文件,然後dos2unix -ic子過濾到也包含 LF 的文件,最後一個實際上執行轉換。這些cut呼叫是為了修剪掉混淆的兩個前導空格xargs,並且-d是為了解決檔案名稱中空格的問題,因為輸出沒有被引用。

相關內容