получить последнюю версию, используя скрипт tcl - PullRequest
0 голосов
/ 27 сентября 2019

Nuke - это приложение для составления последовательности изображений и движений.Его атрибуты узлов для пути к файлу позволяют сценариям tcl заменить фактический файл из папки "/ show / ABCD / shot / HJ / HJ0022 / edt / publish / editref / v002"

/ show / ABCD / shot /HJ / HJ0022 / edt / publish / editref / v002 / HJ0022.hj.seq.234233.mov

это можно получить с помощью выражения tcl

[lindex [lsort -increasing [glob -nocomplain /show/[getenv SHOW]/shot/[getenv SEQ]/[getenv SHOT]/edt/publish/editref/v002/*.mov]

Вопрос:

Скажем, есть несколько папок

/show/ABCD/shot/HJ/HJ0022/edt/publish/editref/v002
/show/ABCD/shot/HJ/HJ0022/edt/publish/editref/v003
/show/ABCD/shot/HJ/HJ0022/edt/publish/editref/v004
/show/ABCD/shot/HJ/HJ0022/edt/publish/editref/v005

Как получить последнюю папку v005, используя выражение tcl в одной строке, как указано выше.~

Я пытался использовать regexp

[lindex [lsort -increasing [glob -nocomplain /show/[getenv SHOW]/shot/[getenv SEQ]/[getenv SHOT]/edt/publish/editref/[regexp -inline "v[0-9]{3}" [value Read1.file] ]/*.mov]

, где Read1 - это имя узла чтения, но, очевидно, это неверно, и догадка заключается в том, что это неправильный способ его реализации.Как правильно использовать регулярные выражения здесь или как получить файл из папки последней версии ~

1 Ответ

1 голос
/ 27 сентября 2019

Как получить последнюю папку v005, используя выражение tcl в одной строке, как указано выше.

Предполагая, что список путей к файлам lsort 'ed, используйте для него lindex:

lindex [lsort -increasing $files] end

или

lindex [lsort -decreasing $files] 0

Это распространяется на другие сценарии сортировки, см., Например: команда для получения списка файлов, упорядоченного по возрасту (mtime) в Tcl

...