Как добавить расширение .sh к файлам сценариев в Linux

У меня есть десяток файлов без расширения, и мне нужно добавить ко всем файлам относятся скрипт Bourne-Again shell. Как вы этого добьетесь, не используя sed, awk,...

Я нашел файлы так:

      file * | grep "Bourne-Again shell"

Как с помощью команды xargs добавить расширение к файлам, полученным выше? Если возможно, команда file должна быть включена в каналы для поиска файлов.

2 ответа

Вы можете сделать это так:

      for f in *
    do
    grep "Bourne-Again shell" <(file "$f") >/dev/null && echo mv "$f" "$f".sh
    done

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


Уведомление:

xargsне лучше всего подходит для этой операции, но если вы настаиваете, то это можно сделать уродливым способом:

      file * | grep "Bourne-Again shell" | cut -f 1 -d ' ' | rev | cut -c 2- | rev | xargs -I {} -n1 echo mv {} {}.sh

Запустите приведенный выше код из каталога, содержащего ваши файлы сценариев, и удалите echoкогда вы удовлетворены результатом, чтобы сделать фактическое переименование.

Вы можете использовать mvизменить имя файла.

Например mv $FILENAME $FILENAME.sh

      file * | grep "Bourne-Again shell" | while read FILE; do mv "${FILE}" "${FILE}.sh"; done
Другие вопросы по тегам