回答:
find . -type f -print0 | xargs -0 dos2unix
現在のディレクトリ内のすべてのファイルを再帰的に検索し、これらのファイルを呼び出すdos2unixコマンド
\;; echo Hello
find
呼び出しではこのチェックは行われません(ただし、追加するのは簡単ですが)が、dos2unix
バイナリファイルは正しくスキップされます。
ディレクトリが大きい場合は、複数のプロセッサで実行することを検討してください。
find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix
これは一度に1つのファイルを渡し、4つのプロセッサを使用します。
n
桁か2桁上げます(ここで話しているファイルの数によって異なります)
たまたまdos2unixに満足できなかったので、自分の簡単なユーティリティを公開しました。速度と予測可能性におけるいくつかの利点の他に、構文も少し単純です。
endlines unix *
そして、サブディレクトリに移動したい場合(隠しディレクトリと非テキストファイルをスキップ):
endlines unix -r .
endlines
こちらから入手できますhttps://github.com/mdolidon/endlines
dos2unix
ますか?真に好奇心が強い。
dos2unix
さまざまな機能を持つさまざまながたくさんあります(たとえば、UTF32を読み取るものもあれば、しないものもありますが、エンドラインはそうではありません)。endlines
よく知られている機能は1つだけです。2 /入力に関しては自由ですが、すべてでdos2unix
はありません。3 /数万のファイルで高速かつ実用的になるように設計された効率的なファイルツリー探索。4 /は、OSXでそのまま実行されます-Brewパッケージが存在するため、これはあまり重要ではありません。
バージョンが十分に新しい場合、またはを使用している場合は、次のよう.git.
に、を使用する代わりに、隠しファイルやフォルダーをスキップすることをお勧めします。find
bash
zsh
dos2unix **
Bashの場合、これには以下が必要です。
shopt -s globstar
....しかし、これは十分に便利な機能であり、.bashrc
とにかく正直に入れておくべきです。
あなたがいる場合していないと隠しファイルとフォルダをスキップしたいのですが、あなたはまだ混乱したくないfind
(と私はあなたを責めないだろう)、あなたが一致する2番目の再帰グロブ引数に提供できる唯一の隠されたエントリを:
dos2unix ** **/.*
どちらの場合も、グロブはディレクトリを含むように展開されるため、次の警告が表示されます(潜在的に何回か繰り返されます)。 Skipping <dir>, not a regular file.
dos2unix
引数がどのように展開されるかに影響を与えるある種のエイリアスを持っているということです。type dos2unix
システムの出力は何ですか?
**
であるfind
と私の回答は明確に述べています.git
。展開してそれらを表示しないdos2unix
ため、隠しファイルは表示され**
ません。あなたがいる場合したい自動的に実行するためにdos2unix
隠しファイルとフォルダには、使用することができますfind
または拡大するだけで隠しファイルとフォルダを含む(ルートディレクトリ)、現在のフォルダに(親ディレクトリ)、および他の非表示のエントリを。dos2unix ** **/.*
**/.*
.
..
dos2unix
単に印刷さSkipping <dir>, not a regular file.
れるので、実行し..
て.
も安全であることに注意してください。)さらに、ls
グロブと組み合わせることは、グロブがどのように展開されているかを確認する良い方法ではありません。echo
代わりに使用:から受け取るecho **
引数dos2unix
を出力しdos2unix **
ます。
**
暗示するかについて全く間違った考えを持っていました、そしてそれを使うecho
ことはそれを明確にします。
for FILE in /var/www/html/files/*
do
/usr/bin/dos2unix FILE
done
私はこれを100万回ぐらい回したので、私の解決策はこのbash関数を環境に置くことです。
.bashrc
または.profile
または何でも
dos2unixd() {
find $1 -type f -print0 | xargs -0 dos2unix
}
使用法
$ dos2unixd ./somepath
このようにして、元のコマンドがまだ残っているので、このコマンドdos2unix
を簡単に覚えることができますdos2unixd
。
サブディレクトリがない場合は、
ls | xargs -I {} dos2unix "{}"
dos2unix *
は、より単純で、実際にはこれよりも堅牢です。(の出力をパイプls
処理することは、お勧めできません。これ*
は、書式設定ツールであり、プログラムで使用する場合の信頼性が高いためです。)
find . -type f -print0 | xargs -0 dos2unix
私が思う問題を解決するでしょう。