Два -прохода 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
пройти
Проще всего использовать инструмент rename
, который позволяет выполнять простой поиск -и -замену во многих именах файлов:
rename [options] <expression> <replacement> <file>...
Что-то подобное должно делать:
rename " E0" E0 Brooklyn*.mkv
Обратите внимание: если вы используете дистрибутив, подобный Debian -, ваша команда rename
, вероятно, вызывает скрипт Perl с другим синтаксисом ввода вместо обычной утилиты из util-linux
. В этом случае используйте rename.ul
для вызова нужного инструмента. Почему утилита переименования в Debian/Ubuntu отличается от утилиты в других дистрибутивах, таких как CentOS?
Цикл for можно редактировать следующим образом:
for file in *.mkv;
do
mv "$file" "${file//S01 E0/S01E0}"
done
или с помощью команды rename
:
rename 's/S01 E0/S01E0/' *.mkv