各ファイルから改行、スペース、タブを削除します。

各ファイルから改行、スペース、タブを削除します。

10Kテキストファイルを含むフォルダがあるとしましょう。すべて削除したいスペース、 商標そして線を越えて各ファイルから。

これをどのように効率的に実行できますか?

答え1

あなたはそれを使用することができますtr

LC_ALL=C tr -d '[:blank:]\n' < file_in > file_out

10,000個のファイルを処理する必要がある場合、より良い解決策は次のとおりです。

find . -type f -exec perl -i.bak -pe 's/ |\t|\n//g' {} +

答え2

GNUを使用できますsed

$ shopt -s dotglob # includes "hidden" files beginning with .
$ sed -i.bak ':a;N;$!ba;s/[\n \t]//g' *

これにより、フォルダ内のすべてのファイルが処理されます。拡張子を使用して元のファイルのバックアップを保存します.bak。バックアップしたくない場合は-i.bak

これを行うには、次を繰り返し使用します。

sed -i.bak ':a;N;$!ba;s/[\n \t]//g' $(find . -type f)

答え3

ファイルの内容を処理する速度で判断すると、tr正規表現ソリューションよりも高速または類似しているようです。perlsed

tr1万個を超えるファイルを繰り返す場合、プロセスが で処理されるため、できることが多くないので、stdin何をしてもstdout10,000回を生成することになります。これはtrこれを行うためのfind . -maxdepth -exec良い方法です。

関連情報