dos2unix
WindowsからLinuxにコピーされたファイルに対して操作を実行するために、スクリプトは次のコマンドを使用しています。ファイル数が多いため、この操作にはかなり時間がかかります。
これを最適化するためにインターネットを検索した結果、xargs
withをfind
代わりに使用して-exec
パフォーマンスを向上させることができることがわかりましたが、次のものをwithに使用するように変換するのが困難ですxargs
。
find /path_to_files/ -exec bash -c 'dos2unix -k -n "{}" tmp_file && mv tmp_file "{}"' \;
ベストアンサー1
実際にははるかに簡単です。フラグを指定しないと、オブジェクトファイルはすでに変更されているmv
ため、シェルを呼び出すか使用する必要はありません。dos2unix
-n
find /path_to_files -type f -exec dos2unix -k -q -- {} +
-type f
このように、findはディレクトリではなく通常のファイルのみを検索します。標準出力に情報メッセージを書き込まないように-q
フラグを付けます。代わりに、見つかった各ファイルに対してプロセスを呼び出さずに引数()と同じ数のファイルを提供するためにfindをdos2unix
使用します。{} +
{} \;
dos2unix
dos2unix file1 file2 file3 ...
Xargsは追加プロセスにすぎないため、追加の時間ペナルティが発生します。可能であれば、新しいプロセスを呼び出さないでください。