Как изменить суффикс всех файлов, которые содержат определенную строку - PullRequest
0 голосов
/ 23 декабря 2019

Я хочу найти все * .xml файлы с определенным DOCTYPE и изменить суффикс с .xml на .dita.

Я могу перечислить файлы следующим образом:

find . -type f -name '*.xml' -exec grep --files-with-matches '<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA' {} +

но я не совсем уверен, что это можно передать в команду mv, которая сделает желаемое переименование.

1 Ответ

0 голосов
/ 23 декабря 2019

Вдохновленный Изменение строки замены в xargs из @betabandido:

Попробуйте добавить | xargs -n 1 -i sh -c 'echo mv $1 ${1%.xml}.dita' -- {}, если вывод выглядит нормально, удалите echo, предполагая, что sh находится вфакт bash с тегом linux.

...