Что может вызвать мою ошибку во время установки Manjaro?

Если файлы всегда имеют один уровень каталога в глубину, вы можете выполнить итерацию по ним с помощью чего-то вроде для x в */*_20*_*. Какой шаблон использовать, зависит от того, какие другие файлы могут присутствовать, которые вы не хотите переименовывать. Шаблон, который я только что дал, предполагает, что дата начинается с 20 и что все файлы, имя которых содержит _20 и еще один знак подчёркивания после этого, должны быть переименованы.

Вы можете выполнить переименование с помощью цикла оболочки, используя конструкции расширения параметров для создания нового имени файла.

for old_name in ./*/*_20_*_*; do
  base=${old_name##*/}        # remove the directory part
  prefix=${base%%_20*}        # remove everything from _20
  suffix=${base#*_20}         # remove everything up to _20
  suffix=${suffix#*_}         # ... then everything before the first remaining _
  mv "$old_name" "${old_name%/*}/${prefix}_${suffix}"
done

Если файлы имеют разную глубину, в bash ≥4.3 вы можете запустить shopt -s globstar, затем для x в **/*_20*_*; …. Шаблон ** соответствует любой глубине каталога, если globstar включен. Это также работает в bash 4.0–4.2 с оговоркой, что он также проходит через символические ссылки на каталоги.Это также работает в zsh и ksh, без оговорок, из коробки в zsh и с set -o globstar в ksh.

1
14.11.2017, 14:32
0 ответов

Теги

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