vadik |
|
Темы:
55
Сообщения:
5395
Участник с: 17 августа 2009
|
Всем привет. Друзья, есть вопрос. Имею пачку бинарных файлов над которыми нужно выполнить одну рутинную операцию. В бинарниках кроме прочего указаны названия файлов, так вот, нужно заменить расширения этих файлов на другие. Т.е. было ".txt" стало ".doc". Точка вначале нужна, чтоб гарантировано отсечь случайные совпадения. Количество заменяемых символов одинаковое, поэтому структура файла не нарушится и со сдвигами можно не заморачиваться. По-одному все прекрасно правится в hex-редакторах, но это долго и муторно. У кого какие мысли? |
jim945 |
|
Темы:
8
Сообщения:
3066
Участник с: 25 января 2010
|
sed не работает? https://www.linux.org.ru/forum/general/11084913
Lupus pilum mutat, non mentem.
|
vadik |
|
Темы:
55
Сообщения:
5395
Участник с: 17 августа 2009
|
jim945непонятно в каком формате вводить данные. В 16-ричном точно не меняет. с двоичными тоже не прокатывает. |
jim945 |
|
Темы:
8
Сообщения:
3066
Участник с: 25 января 2010
|
как есть .txt
Lupus pilum mutat, non mentem.
|
vasek |
|
Темы:
48
Сообщения:
11320
Участник с: 17 февраля 2013
|
Конечно, можно написать и на С (там есть специальные функции для поиска и вставки в hex формате), можно написать и на bash, но, по моему, проще выполнить преобразование одной командой, для каждого файла в отдельности, используя совет jim945, как есть .... На выбор или perl или perl -i -pe 's/.txt/.doc/' /path/to/file sed -i -e 's/.txt/.doc/' /path/to/file По времени ничего не выигрывается ..... но командой удобнее и проще. UPD ... при тренировке лучше сравнивать бинарники, используя vbindiff (консольная утилита для сравнения/правки бинарников) vbindiff /path/to/file1 /path/to/file2 ................ отличия будут выделены красным цветом PS..... уточнения 1. из sed "e" можно убрать (пишу по привычке ...) 2. если есть желание, то файлы можно вписать все сразу , через пробел, типа perl -i -pe 's/.txt/.doc/' /path/to/file1 /path/to/file2 /path/to/file3
Ошибки не исчезают с опытом - они просто умнеют
|
vadik |
|
Темы:
55
Сообщения:
5395
Участник с: 17 августа 2009
|
Все, всем спасибо за подсказки. Кому понадобиться -
vasekбез g, будет заменено только первое попавшееся вхождение. vasekможно еще проще - по маске. За vbindiff - отдельное спасибо. Сейчас до-обновляюсь (надо же хотя бы раз за пару месяцев) и пощупаю, что это зверь такой. )) |