LF を CRLF に選択的に修正する

LF を CRLF に選択的に修正する

与えられた条件:

  • 以下のものが混在する大きなディレクトリ ツリー:
    • LF 行末のファイル
    • CRLF 行末のファイル
    • LF と CRLF の行末が奇妙に混在するファイル (バグによる)
    • バイナリファイル
    • 壊れていても触りたくないその他のファイル
  • スペースを含む可能性のあるパス

私の目標は、LF のみのファイルと CRLF のみのファイルをそのままにして、ハイブリッド ファイルを CRLF のみのファイルに変換し、最後の 2 つのグループもそのままにしておくことでした。

この呪文は効きます:

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

しかし、今は、もっと良い/効率的な方法があるかどうか興味があります。(Perl/Python などではなく、標準のシェル ツールのみを使用します。)

ちなみに、最初のものは、unix2dos -ic最初のリストを CRLF を含むファイルだけにフィルタリングし、次にdos2unix -icLF も含むファイルにサブフィルタリングし、最後のものは実際に変換を行います。cutの呼び出しは、 を混乱させる 2 つの先頭のスペースを削除するためのものでxargs、 は、-d出力が引用符で囲まれていないため、ファイル名のスペースに関する問題を解決するためのものです。

関連情報