Изменить - на _ в именах файлов - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть файлы с таким именем

A-1
B-3
C-5
U-8
A-2

... и т. Д.

Я хочу изменить имя всех этих файлов на это, потому что программное обеспечение, которое я хочу использовать я не принимал файлы с таким именем, и я думаю, что это из-за -.

A_1
B_3
C_5
U_8
A_2

Поэтому я просто хочу изменить - на _ во всех файлах, используя для l oop или что-то.

1 Ответ

1 голос
/ 20 апреля 2020

эта команда должна работать для вас

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

Действительно красиво и компактно, спасибо Шон!

...