У меня есть каталог с огромным количеством файлов. Я хочу написать скрипт bash для -

  1. Введите этот каталог
  2. Узнайте, какие из них являются сценариями Perl (но ни один из них не имеет расширения .pl)
  3. Добавьте строку в верхней части каждой строки (я собираюсь добавить новый шебанг). Если не Perl-скрипт, ничего не делать

Я не могу найти сценарии Perl, пытался использовать grep, но не получил нужную команду. Кроме того, третий шаг также, где я застрял.

1 ответ1

0

Максимум, что вы можете сделать, чтобы найти файлы perl, это использовать сам Perl для оценки. perl -c возвращает ненулевой код завершения, если файл не является правильным кодом perl, что определенно верно для файлов MOST, которые вообще не являются perl. К сожалению, он делает то же самое, когда в него подается неверный код perl, и возвращает 0, когда файл на самом деле не является кодом perl, но может быть проанализирован без ошибок, как если бы он был. Если вы можете жить с этим риском, суть его может быть следующим:

for FILE in * ; do
   if perl -c "$FILE" >/dev/null ; then
      sed -i -e '1i#!/usr/bin/perl' "$FILE"
   fi
done

Примечание: как только я в любом случае коснусь файлов, я добавлю расширение .pl, если только не будет ДЕЙСТВИТЕЛЬНО серьезной причины быть слепым.

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