
鑑於:
- 一個大目錄樹,包含以下內容的混合:
- 帶有 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
是為了解決檔案名稱中空格的問題,因為輸出沒有被引用。