dos2unix
を使ってディレクトリ全体を変換する必要があります。これを行う方法を私は理解することができません。
find . -type f -print0 | xargs -0 dos2unix
現在のディレクトリ内のすべてのファイルを再帰的に検索し、これらのファイルを要求します。dos2unixコマンド
それが大きなディレクトリの場合は、複数のプロセッサで実行することを検討してください。
find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix
これは一度に1ファイルを渡し、4プロセッサを使用します。
たまたまdos2unixに満足していなかったので、私は自分自身の単純なユーティリティを公開しました。速度と予測可能性の点でいくつかの利点がありますが、構文も少し単純です。
endlines unix *
そして、あなたがそれをサブディレクトリ(隠されたディレクトリと非テキストファイルをスキップする)に降ろしたいならば:
endlines unix -r .
endlines
はこちらから入手できます https://github.com/mdolidon/endlines
.git.
などの隠しファイルやフォルダーをスキップするのがおそらく最善です。したがって、find
バージョンが十分に新しい場合、またはbash
を使用している場合は、zsh
を使用する代わりに、ただやる:
dos2unix **
Bashの場合、これには以下が必要であることに注意してください。
shopt -s globstar
....しかし、これは十分に便利な機能なので、正直に言って.bashrc
に入れる必要があります。
しない隠しファイルとフォルダーをスキップしたいが、find
をいじりたくない場合(そして、私はあなたを責めない) only隠しエントリに一致するrecursive-glob引数:
dos2unix ** **/.*
どちらの場合も、グロブはディレクトリを含むように拡張されるため、次の警告が表示される可能性があることに注意してください(潜在的に何回も):Skipping <dir>, not a regular file.
Solarisユーザ(5.10を使用しています)。他のUNIXシステムと同様に、より新しいバージョンにも適用できます。
dos2unixはデフォルトでファイルを上書きすることはしません、それはただ更新されたバージョンを標準出力にプリントするでしょう、それであなたはソースとターゲットを指定する必要があるでしょう、すなわち同じ名前を二度指定します:
find . -type f -exec dos2unix {} {} \;
一般的な使用例は、Gitリポジトリにコミットされたすべてのファイルの行末を標準化することです::
git ls-files | xargs dos2unix
特定のファイル(*.sln
、*.bat
など)などは、Windowsオペレーティングシステムでは only として使用され、keepCRLF
の末尾には次のように入力してください。
git ls-files '*.sln' '*.bat' | xargs unix2dos
必要に応じて.gitattributes
を使用してください
for FILE in /var/www/html/files/*
do
/usr/bin/dos2unix FILE
done
私は同じ問題を抱えており、ここの投稿のおかげで私はそれを解決しました。私は約100個のファイルがあることを知っていたので、*。jsファイルに対してのみ実行する必要がありました。 find . -type f -name '*.js' -print0 | xargs -0 dos2unix
ご協力ありがとうございました。
サブディレクトリがない場合は、あなたも取ることができます
ls | xargs -I {} dos2unix "{}"