При переименовании файлов, чтобы иметь расширения нижнего регистра с 'переименовывают'

greps параметр -l только произведет имена файлов, которые соответствуют $PATTERN, wc может считать их впоследствии.

grep -l "$PATTERN" * | wc -l
5
31.08.2011, 02:49
1 ответ

Это - основанное на Perl rename найденный на Debian, Ubuntu и производных, судящих синтаксисом. Вы не можете использовать tr оператор, потому что это действует на целую строку. Но можно соответствовать расширению и нижнему регистру это с \L.

rename 's/\.[^.]*$/\L$&/' *.JPG *.MOV

Здесь является ненужным, но если бы regexp соответствовал больше, чем часть, которую Вы хотите к нижнему регистру, то Вы могли поместить часть, которая будет согласована в группе:

rename 's/\.([^.]*)$/.\L$1/' *.JPG *.MOV

Замена *.JPG *.MOV *.* действовать на все файлы независимо от расширения. В ударе ≥4.3 (и также в ударе 4.0–4.2, с протестом, что это также пересекает символьные ссылки на каталоги), можно легко действовать на файлы в подкаталогах и так далее рекурсивно:

rename 's/\.[^.]*$/\L$&/' **/*.*

Для zsh вентиляторов ( :r и :e модификаторы изолируют расширение от остальной части файла):

autoload zmv
zmv '*.(MOV|JPG)' '${f:r}.${(L)f:e}'      # these extensions, current directory
zmv '*.*' '${f:r}.${(L)f:e}'              # all extensions, current directory
zmv '**/*.*' '${f:r}.${(L)f:e}'           # all extensions, recursive directory traversal
7
27.01.2020, 20:38
  • 1
    Ура для завоевания! –  Naftuli Kay 31.08.2011, 03:01
  • 2
    @StéphaneChazelas, Почему бы не использовать :r и :e в zsh? Они делают команду более простой. –  Gilles 'SO- stop being evil' 19.05.2017, 13:44
  • 3
    @StéphaneChazelas я думаю в то время, когда я не привык к $f, который не был зарегистрирован. Теперь я решил, что буду использовать $f так или иначе, и я вижу, что это было наконец добавлено к документации. –  Gilles 'SO- stop being evil' 19.05.2017, 14:06

Теги

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