Команда sed для записи имени файла в HTML-комментарий - PullRequest
1 голос
/ 02 сентября 2010

Я ищу команду sed, которая с помощью find может взять дерево каталогов файлов JSP и записать имя файла в HTML-комментарии в начало файла.

Это позволит мне просмотреть дерево вызовов JSP устаревших приложений в источнике HTML.

Я думаю, что это будет один вкладыш для талантливого sed гуру ...

что-то вроде:

find . -name '.jsp' -exec sed ? ? ? {} \;

Может быть, что-то с использованием xargs более уместно, но я думаю, что sed - это инструмент, который сделает эту работу.

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

Если вы хотите использовать sed, вы можете попробовать

find -name "*.jsp" -exec sed -i '1i <!-- {} -->' {} \;

У меня отлично работает при наличии /.

1 голос
/ 02 сентября 2010

В Unix имя файла будет содержать косые черты (/), которые являются специальными символами для sed, поэтому я рекомендую этот более простой подход, который записывает имя файла в bottom файла:

find . -name '*.jsp' -exec sh -c "echo '<\!-- {} -->' >> '{}'" \;

Чтобы записать имя файла в top файла, используйте это:

find . -name '*.jsp' -exec sh -c \
     'echo "<!-- {} -->" > "{}.new" && cat "{}" >> "{}.new" && mv "{}.new" "{}"' \;

N.B. Имя файла может содержать символы, которые могут сделать ваш HTML недействительным, например, &, хотя я сомневаюсь, что JSP может иметь такое странное имя.

...