
与えられた条件:
- 以下のものが混在する大きなディレクトリ ツリー:
- 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 -ic
LF も含むファイルにサブフィルタリングし、最後のものは実際に変換を行います。cut
の呼び出しは、 を混乱させる 2 つの先頭のスペースを削除するためのものでxargs
、 は、-d
出力が引用符で囲まれていないため、ファイル名のスペースに関する問題を解決するためのものです。