Answers:
递归地使用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' {} +
我会用sedor 来做到这一点perl(请参阅Sardathrion的答案),因为它们支持内联编辑,但是expand无论如何我都想提到很好。
编辑:那将是 find . -type f -name '*.scala' -exec perl -p -i -e $'s/\t/ /g' {} +
应该这样做:
find . -type f -name '*.scala$' -exec sed -i 's/\t/ /g' {} +
注意:这未经测试。
find或支持**/*.scala递归的shell 。
find | xargs。find -exec就像我在回答中提到的那样使用。更轻松,更安全。