Как переименовать файлы с разными расширениями

Неправильный синтаксис переменной. Переменная разыменовывается как $ {n} . Поэтому попробуйте

sed -i -e "1,${n}d" filename
1
05.02.2018, 14:25
2 ответа

Вот решение, которое мне удалось заставить работать:

#!/bin/bash
shopt -s nullglob

my_files='/root/temp/files'
old_name='essay'
new_name='new_name'

for file in "${my_files}/${old_name}"*; do
    my_extension="${file##*.}"
    mv "$file" "${my_files}/${new_name}.${my_extension}"
done
  • shopt -s nullglob

Это предотвратит ошибку, если каталог, который он анализирует, пуст

  • for file in "${my_files}/${old_name}"*; do

Мы будем перебирать все fileв /root/temp/files/, если они начинаются сessay

  • my_extension="${file##*.}"

Это жадно обрежет все до последнего.найденного в имени файла (, надеюсь, оставив вам только расширение)

  • mv "$file" "${my_files}/${new_name}.${my_extension}"

При этом старому файлу присваивается новое имя с сохранением расширения. (переименовать)

3
27.01.2020, 23:12

Если вы используете zsh, вы можете сделать это:

autoload zmv
zmv -w 'essay.*' 'new_name.$1'

любезно предоставлен этим ответом .

1
27.01.2020, 23:12

Теги

Похожие вопросы