LINUX.ORG.RU

[bash] переименование названий и содержимого файлов

 


0

0

Есть директория с исходниками на С.
1)Нужно переименовать все файлы, начинающиеся на подстроку XXX_,
чтобы они начинались на YYY_,
2) Затем нужно заменить все вхождения подстроки XXX_
внутри файлов *.h и *.c на YYY_

Для второго пункта надо заюзать sed, как я понимаю

Если кто-то делал подобные глобальные переименования в исходниках,
были ли какие-то подводные камни?
В исходниках вхождения подстроки могут быть как в виде
«#include XXX_file.h» так и в названиях структур, переменных и функций

★★★★★

Как-то так, навскидку:

1) for file in $(find -name 'XXX_*'); do mv «$file» «$(echo $file|sed 's/^XXX_/YYY_/')»; done

2) find -regex '.*\.[ch]$' | xargs -0 grep -L '#include «XXX_' | xargs -0 sed 's/\(#include\s*\)„XXX_/\1"YYY_/g'

P.S. Сделай резервную копию :)

Slavaz ★★★★★
()

1. rename XXX_ YYY_ XXX_*
2. for f in *.[ch]; do sed -i «s/XXX_/YYY_/g» $f; done

ananas ★★★★★
()

Камни в том, что при переименовании в исходниках не производится синтаксического анализа, как рефакторинг тулах. Возможны проблемы.

JackyTreehorn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.