Как удалить все, кроме последних 12 символов из имен файлов различной длины, используя терминал Ma c? - PullRequest
1 голос
/ 10 февраля 2020

Как удалить последние 12 символов из этих файлов и изменить его следующим образом:

RE0001_cdea_3000_001_000_0000.MP4

175c_3000_000_000_0000.MP4

На это:

001_000_0000.MP4

000_000_0000.MP4

Я предполагаю, что это обратное чему-то вроде for f in *; do mv "$f" "${f:12}"; done. Но это убрало первые 12 символов, и, поскольку длина файла изменится, я надеюсь начать с типа файла и сосчитать слева. Спасибо за вашу помощь!

1 Ответ

3 голосов
/ 10 февраля 2020

Использование отрицательного смещения отсчитывается от конца.

mv "$f" "${f: -12}"

Обратите внимание, что при использовании отрицательного смещения вы должны ставить пробел перед смещением. В противном случае он интерпретируется как ${f:-defaultvalue}

Но похоже, что вы забыли подсчитать суффикс .MP4, вам нужны последние 16 символов.

mv "$f" "${f: -16}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...