ファイルシステムブランチのすべてのファイルのすべてのタブをタブごとに2つのスペースに置き換える方法は?

ファイルシステムブランチのすべてのファイルのすべてのタブをタブごとに2つのスペースに置き換える方法は?

私はScalaコードを書いて、レベルごとに二重スペースを使うのが慣例です。ただし、他のエディタを使用すると、ソースコードが空白とタブでいっぱいになります。

すべてのファイル(実際には* .scalaファイルですが、それを指定する必要はありません)(与えられたディレクトリとすべてのデフォルトのFSブランチ(再帰的))を自動的に再構成して、すべてのタブ文字を二重スペースに置き換えたいと思います。私は伝統的なUnix / GNUツールを使用してこれを行う簡単で美しい方法があると確信していますが、この分野での経験が欠けています。あなたは私を助けるでしょうか?

答え1

これにより、トリックを実行できます。

find . -type f -name '*.scala$' -exec sed -i 's/\t/  /g' {} +

メモ:これはテストされていません。

答え2

再帰的に以下を使用してくださいexpand(この目的のために作成されます):find . -type f -name '*.scala' -exec bash -c 'for x in "$@"; do mv "$x"{,.bak} && expand -t 2 "$x.bak" > "$x" && rm "$x.bak"; done' {} +

sedインライン編集をサポートしているので、or(Sardathrionの回答を参照)を使って行いましたが、perlとにかく言及したかったのですexpand

編集:それはfind . -type f -name '*.scala' -exec perl -p -i -e $'s/\t/ /g' {} +

関連情報