Простое решение проблемы смешанного форматирования
В программировании использование табуляции для создания отступов и форматирования исходного кода является темой для непрекращающихся дискуссий. Некоторые программисты полагают, что использование 8 пробелов для представления одного символа табуляции слишком много, мотивируя это тем, что просмотр кода с большим уровнем вложенности (и, как следствие, с большими отступами) затруднён. Программисты, предпочитающие использовать табуляцию, отвечают тем, что код с большим уровнем вложенности неудачен сам по себе.
Есть много аргументов как за использование табуляции, так и против. Тем не менее, при использовании табуляции возникают проблемы, если у человека, редактирующего впоследствии код, редактор сконфигурирован расширять табуляцию другим количеством пробелов. В результате в некоторых строках для отступах будет использоваться табуляция, в некоторых — пробелы или смесь из пробелов и табуляции. При просмотре в другом редакторе такой код может выглядеть просто ужасно.
К счастью, в Linux проблема решается очень просто (причем как для замены табуляции пробелами, так и наоборот).
Рассмотрим два случая. В обоих случаях будем полагать, что нам нужно произвести глобальную замену во всех файлах с расширением PHP.
Случай 1. Замена табуляций на пробелы.
Расширение табуляции до четырёх пробелов:
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'expand -t 4 "{}" | cat > "{}"'
Расширение табуляции до восьми пробелов:
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'expand -t 8 "{}" | cat > "{}"'
Расширение табуляции до восьми пробелов, не затрагивая символы табуляции, находящиеся после пробелов:
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'expand -t 8 -i "{}" | cat > "{}"'
Случай 2. Замена пробелов на табуляцию.
Установка размера табуляции в 8 пробелов
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'unexpand -t 8 "{}" | cat > "{}"'
Установка размера табуляции в 4 пробела
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'unexpand -t 4 "{}" | cat > "{}"'
Установка размера табуляции в 4 пробела с заменой только начальных пробелов
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'unexpand -t 4 --furst-only "{}" | cat > "{}"'
Кстати, очень интересно замечание Линуса Торвальдса:
Tabs are 8 characters, and thus indentations are also 8 characters. There are heretic movements that try to make indentations 4 (or even 2!) characters deep, and that is akin to trying to define the value of PI to be 3.

