1

У меня есть серия файлов с номерами 1-20, и Терминал сортирует их так:

episode1.txt
episode10.txt
episode11.txt
episode12.txt

Я хочу переименовать файлы 1-9, вставив 0 перед номером. Мой код следующий:

for file in episode{1-9}.txt
do
   rename -vs "episode"* "episode0"*
done

Я также попробовал команду 'mv', но она не работает. У кого-нибудь есть предложения? заранее спасибо

1 ответ1

0

Чтобы перечислить последовательность, используйте {x..y} вместо {x-y} .

Поскольку все ваши файлы имеют очень похожее имя, мы можем использовать расширение параметров, чтобы отрубить episode префикса, заменив его на episode0 .

Полная команда выглядит так:

for file in episode{1..9}.txt
do
    mv "$file" "episode0${file#episode}"
done

${file#episode} - это расширение параметра, которое в этом случае расширяет file параметров, удаляя при этом шаблон с самым коротким префиксом, который соответствует episode .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .