鉴于:
- 一个大目录树,包含以下内容的混合:
- 带有 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
是为了解决文件名中空格的问题,因为输出没有被引用。