▪️ Вариант 1: rename. Если нужно заменить часть имени:
# Заменить "old" на "new" во всех именах
rename 's/old/new/' *.txt
Удалить префикс:
rename 's/^prefix_//' *.log
Добавить суффикс перед расширением:
rename 's/\.jpg$/_edited.jpg/' *.jpg
▪️ Вариант 2: sed + цикл. Когда шаблон сложный или нужно сгенерировать новое имя:
for f in *.mp4; do
new=$(echo "$f" | sed 's/episode_/ep-/; s/_final//')
mv "$f" "$new"
done
Можно применять любую логику, хоть разбивать строку на части.
▪️ Вариант 3: Bash expansion. Если у файлов есть общий номер или маска:
# Добавить нумерацию
n=1
for f in *.png; do
mv "$f" "img_$(printf "%03d" $n).png"
((n++))
done
Переименование 01 в 001:
for f in *.txt; do
mv "$f" "$(printf "%03d".txt "${f%.txt}")"
done
⚠️ Совет: Перед
mv всегда смотрите, что получится:
for f in *.txt; do
echo mv "$f" "new-$f"
done
Если вывод выглядит правильно, то можно убирать
echo.BashTex 📱 #bash