Переименовать определенную часть множества файлов

Два -прохода sortрешение

sort -k1,1 -k2,2 -t, file | sort -k1,1 -t, -u

Сначала sortпроходят кластеры записей по полю 1с falseзаписями, предшествующими trueдля каждого блока записей, имеющих общее значение поля 1. Второй проход sortнастроен на получение одной записи для каждого отдельного значения в поле 1благодаря -u. Поскольку -uподразумевает стабильную сортировку, полученная таким образом одна запись является первой записью, встречающейся для каждого отдельного значения в поле 1-, которое является записью с falseво втором поле из-за работы, проделанной первым sortпройти

2
07.12.2018, 11:00
2 ответа

Проще всего использовать инструмент rename, который позволяет выполнять простой поиск -и -замену во многих именах файлов:

rename [options] <expression> <replacement> <file>...

Что-то подобное должно делать:

rename " E0" E0 Brooklyn*.mkv

Обратите внимание: если вы используете дистрибутив, подобный Debian -, ваша команда rename, вероятно, вызывает скрипт Perl с другим синтаксисом ввода вместо обычной утилиты из util-linux. В этом случае используйте rename.ulдля вызова нужного инструмента. Почему утилита переименования в Debian/Ubuntu отличается от утилиты в других дистрибутивах, таких как CentOS?

1
27.01.2020, 22:17

Цикл for можно редактировать следующим образом:

for file in *.mkv;
do
   mv "$file" "${file//S01 E0/S01E0}"
done

или с помощью команды rename:

rename 's/S01 E0/S01E0/' *.mkv
0
27.01.2020, 22:17

Теги

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