LFをCRLFに選択的に変更

LFをCRLFに選択的に変更

一方:

  • 次の項目が混在する大規模ディレクトリツリー:
    • LF 行末のあるファイル
    • CRLF で終わるファイル
    • LFとCRLFの行末が奇妙に混在するファイル(バグのため)
    • バイナリファイル
    • 他のファイルは破損しても触れたくないファイル
  • スペースを含めることができるパス

私の目標は、LFのみとCRLFのみのファイルを維持し、最後の2つのグループを維持しながら、混合ファイルを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

しかし、今はこれを行うより良い効率的な方法があるかどうか疑問に思います。 (Perl / Pythonなどではなく標準のシェルツールを使用してください。)

FWIW、最初はunix2dos -ic最初のリストをCRLFを含むファイルのみにフィルタリングし、LFも含むファイルにサブdos2unix -icフィルタリングし、最後は実際に変換を実行します。これらの呼び出しは、2つの難読化された先行スペースを切り取り、出力が引用符で囲まれていないcutため、ファイル名の空白の問題を解決するために行われます。xargs-d

関連情報