эта команда должна работать для вас
for FILE in *; do NFILE=$(echo "$FILE" | sed s/-/_/g); mv "$FILE" "$NFILE"; done
Forl oop захватывает все файлы в каталоге, вы можете добавить что-то вроде *.png
для фильтрации файлов. В этом l oop имя файла отражено и передано в sed. Sed - удобный инструмент, который может делать все что угодно, но мы используем его, чтобы изменить -
на _
с помощью синтаксиса: s/find/replace/g
. После этого мы используем эту новую переменную, чтобы переместить существующий файл в новое имя, иначе оно переименовывается.
Дайте мне знать, если вам нужна дополнительная помощь!
Редактировать: как указано Шоном ниже, если вы используете bash или zsh, вы можете использовать функцию построения и вам не нужен sed. Эта команда будет выглядеть так:
for FILE in *; do mv "$FILE" "${FILE//-/_}"; done
Действительно красиво и компактно, спасибо Шон!