Конвертировать отступ во всю папку - PullRequest
0 голосов
/ 21 января 2019

Я работаю в большом проекте с ~ 35 500 файлами, и я хочу знать, хочу ли я преобразовать отступ всего проекта. Я знаю, что могу сделать

unexpand -t 4 <file>

но я не могу запустить его для каждого файла.

Я думал о каком-то способе сделать это с tree, который, как я знаю, может манипулировать, чтобы напечатать каждое имя файла с полным путем ... или кто-то знает программу оболочки, которая может перебирать все файлы в папке и вложенные папки, чтобы я мог использовать unexpand?

1 Ответ

0 голосов
/ 21 января 2019

Поскольку unexpand не имеет опции перезаписи, попробуйте:

#!/bin/bash

dir="."
while read -r -d "" file; do
    tmpfile=$(mktemp /tmp/tempfile.XXXXXX)
    unexpand -t 4 "$file" > "$tmpfile"
    cp --preserve=all --attributes-only -- "$file" "$tmpfile"  # will work with GNU cp only
    mv -f -- "$tmpfile" "$file"
done < <(find "$dir" -type f -print0)

Строка начинается с cp, просто копирует атрибуты оригинала. Вы можете закомментировать строку, если она не работает.
Обязательно сделайте резервную копию оригинальных файлов перед выполнением.

...