파일 시스템 분기에 있는 모든 파일의 모든 탭을 탭당 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' {} +

관련 정보