Как переименовать файлы, удалив все до второго или третьего вхождения символа?

Была такая же проблема. Как отмечено в комментарии выше, отключение всех расширений с помощьюgnome-tweak-tool(илиgnome-tweaks)решило проблему. Возможно, вам придется выйти и снова войти в систему, чтобы изменения вступили в силу. Публикация этого, чтобы кому-то было легче найти такое же решение. Все еще не уверен, какое расширение вызывает проблему.

2
20.09.2020, 19:29
2 ответа

С помощью утилиты Perl Rename,

$ ls
aaaaaa_bb_cccc_ddddd_ee.jpg
$ rename -n 's/([^_]*_){2}//' *
rename(aaaaaa_bb_cccc_ddddd_ee.jpg, cccc_ddddd_ee.jpg)
$ rename -n 's/([^_]*_){3}//' *
rename(aaaaaa_bb_cccc_ddddd_ee.jpg, ddddd_ee.jpg)

Флаг -nуказывает Rename выводить то, что оно будет делать. Если вы удалите -n, будут применены модификации.

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

s/([^_]*_){2}//означает:sзамену всех вхождений регулярного выражения ([^_]*_){2}в именах файлов ничем. Регулярное выражение означает :любое количество символов подчеркивания, отличных от -, [^_]*, за которыми следует символ подчеркивания _, повторенный дважды.

4
18.03.2021, 23:03

Исключить все до второго_

rename -n 's/[^_]*[_][^_]*[_]//' *

Ликвидировать все до третьего_

rename -n 's/[^_]*[_][^_]*[_][^_]*[_]//' *

Удалите -nдля эффективного изменения имен файлов, а не только для проверки.

3
18.03.2021, 23:03

Теги

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