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' {} +
我会用sed
or 来做到这一点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
就像我在回答中提到的那样使用。更轻松,更安全。