Как добавить текущую дату перед расширением файла для нескольких файлов в каталоге?

Это ошибка в zsh, о которой сообщалось в этом обсуждении [BUG] цитирование внутри шаблонов скобок не имеет эффекта:

case b in
  ( ['a-c'] ) echo 'false match' ;;
  ( [a-c] )   echo 'correct match' ;;
esac

будет выведено ложное соответствие вместо правильного соответствия.

Исправление планируется выпустить с zsh версии 5.3.

1
24.06.2017, 20:55
2 ответа

Используйте расширение параметра, чтобы отделить расширение:

#! /bin/bash
date=$(date +%Y%m%d)
for file in * ; do
    basename=${file%.*}    # Remove extension
    extension=${file##*.}  # Remove basename
    mv "$file" "$basename"_"$date.$extension"
done
6
28.04.2021, 23:59

С короткой командойrename(реализация Perl):

rename 's/\.([^.]+)$/_'$(date +"%d%m%Y")'.$1/' *
0
28.04.2021, 23:59

Теги

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