我编写 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来完成它perl
(参见 Sardathrion 的答案),因为它们支持内联编辑,但无论如何我想提一下好expand
。
编辑:那就是find . -type f -name '*.scala' -exec perl -p -i -e $'s/\t/ /g' {} +