2

Я хотел бы пакетно переименовать файлы (* .txt), вставив номер формата 'RXR1234567' (RXR+7 цифр) [если такой номер (и в идеале только один) найден в тексте] в начале имени файла, например, вместо

letter_235.txt

файл должен называться

RXR1234567_letter_235.txt

Можно ли это сделать из командной строки (grep, rename)? Файлы находятся в разных подкаталогах.

Ваши мысли будут оценены (как всегда).

1 ответ1

1

Попробуйте это в корневом каталоге:

find -name '*.txt' -exec sh -c 'PREFIX=`grep -m 1 -oe "RXR[0-9]\{7\}" "$0"` && mv "$0" "${0%/*}/${PREFIX}_${0##*/}"' {} \;

Примечание. Если файл содержит несколько совпадений шаблона, будет использован первый.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .