Как мне взять текст и разместить его в определенном порядке? - PullRequest
0 голосов
/ 19 июня 2020

Я использую сценарий Google (js) для переименования файлов на моем диске Google, где я ввожу старое и новое имя, разделенные запятыми. Строка, в которой вводятся старое и новое имя, выглядит следующим образом -

function rename(iA=['old1.mp4','old2.mp4','old3.mp4'],oA=['new1.mp4','new2.mp4','new3.mp4']) {

Это говорит само за себя, old1.mp4 будет переименован в new1.mp4, old2.mp4 в new2.mp4 и так далее

Скрипт отлично работает, проблем нет, проблема в том, что мне нужно переименовать тысячи файлов, и я не могу вводить каждый вручную в скрипт. К счастью, они присутствуют на плитке rename.txt, откуда я хотел бы взять их, чтобы правильно разместить в моем скрипте / функции

Формат текста в rename.txt: OldName NewName

Содержимое файла rename.txt выглядит так ..

RandomAlphanumericChars.mp4 Lecture 1 - Some topic.mp4
RandomAlphanumericChars.mp4 Lecture 2 - Some topic.mp4
RandomAlphanumericChars.mp4 Lecture 3 - Some topic.mp4

Здесь 2 видимых отличия ..

1) Когда в любой строке впервые появляется пробел, старое имя закончился. 2) Строка newname всегда начинается со слова Lecture.

(PS не используйте окончание .mp4 для распознавания конца старого имени, так как большинство старых имен содержат .mp4 несколько раз в своем имени, это вызовет проблемы. Пример одного старого имени - rgGW6m9j-32313921.mp4-rgGW6m9j-32313921.mp4.mp4)

Чтобы представить все в окончательной перспективе, регулярное выражение должно захватить текст из rename.txt и поместить его в функцию, подобную этой ..

function rename(iA=['RandomAlphanumericChars.mp4','RandomAlphanumericChars.mp4','RandomAlphanumericChars.mp4'],oA=['Lecture 1 - SomeTopic.mp4','Lecture 2 - Some topic.mp4','Lecture 3 - Some topic.mp4']) {

Здесь важно только то, чтобы порядок оставался правильным ie oldName и NewName должны быть помещены в функцию в том же порядке, что и в файле rename.txt

1 Ответ

1 голос
/ 19 июня 2020

Вот некоторые основные c конструкции и сложная часть сделана, вам нужно добавить недостающий текст

$ awk -v q="'" 'function join(a,s) 
                     {t=""; for(k in a) {s=s t q a[k] q; t=","} return s}
                function wrap(x) 
                     {return "[" x "]"}

                {a[NR]=$1; $1=""; sub(/^ /,""); b[NR]=$0}
            END {print "iA=" wrap(join(a)) "," "oA=" wrap(join(b))}' file

iA=['RandomAlphanumericChars.mp4','RandomAlphanumericChars.mp4','RandomAlphanumericChars.mp4'],oA=['Lecture 1 - Some topic.mp4','Lecture 2 - Some topic.mp4','Lecture 3 - Some topic.mp4']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...