Проблема заключается в том, чтобы переименовать файлы, например:
19-0000-LastName-FirstName_v1_Non-Filtered_2019-03-21_08:12:56.txt
в:
19-0000-LastName-FirstName.txt
На английском языке, основываясь на комментариях, это можно указать как:
Удалить все после и включая _v1
(за исключением сохранения расширения)
Это можно сделать с помощью поиска и заменить следующим образом:
rename 's/_v1.*(\..*)/$1/' *.txt
- match:
- первое появление
_v1
- , за которым следует как можно больше (
.*
) - с последующим периодом (
\.
) - , за которым следует что-либо (
.*
)
- из-за первого
.*
, явно совпадающий период должен быть последним - круглых скобок
(
... )
захватить часть матча для последующего использования (как $1
) - заменить весь матч группой захвата
Примечания:
- шаблон, который вы предоставили, включает в себя раздел
_d+_\d+
, который из-за пропущенного \
соответствует "подчеркивание", "d" "+" "подчеркивание" "одна или несколько цифр".Это никогда не может совпадать с вашим именем файла.Возможно, вы имели в виду: _\d+
s/_.*?//
ищет _
, за которым следует кратчайшая возможная последовательность (*?
) из всего (.
).Самая короткая возможная последовательность - пустая строка.Итак, команда эквивалентна: s/_//