Найти / заменить, но увеличить значение - PullRequest
5 голосов
/ 09 июля 2009

У меня есть файл .HTML, к которому прикреплено много фотографий для отображения фотогалереи. Я заменяю старые фотографии новыми, и я думаю, что должен быть более разумный способ, чем простое копирование и вставка повторяющихся имен файлов.

Мне бы хотелось иметь возможность заменять и увеличивать имя файла при каждой замене, начиная с базового имени файла по моему выбору. Например ...

...images/69thStreet010.jpg
...images/69thStreet011.jpg
...images/69thStreet012.jpg

В основном выполнение CTRL + F и ЗАМЕНА '69thStreet010.jpg' с ...

...images/xyz001.jpg
...images/xyz002.jpg
...images/xyz003.jpg

И так до тех пор, пока я не хочу, чтобы это прекратилось. У кого-нибудь есть предложения? Большое спасибо!

ОБНОВЛЕНИЕ: Я должен также добавить, я использую Notepad ++ для редактирования моих файлов.

Ответы [ 7 ]

9 голосов
/ 04 октября 2012

Посмотрите на Редактор столбцов в Notepad ++. Вы можете сделать выбор блока в области, которую хотите увеличить, а затем задать начальный / конечный диапазон, и все готово.

Я недавно был в похожей ситуации. Я выполнил небольшой поиск / замену по регулярному выражению, чтобы перевести мои имена файлов в мой формат «по умолчанию» с некоторым дополнением «000», где я хотел, чтобы мое приращение началось. После этого я использовал Shift + ALT , чтобы заблокировать выделение тысяч, и использовал редактор для остальной части работы.

5 голосов
/ 09 июля 2009

Если ваш S & R поддерживает Regex, используйте это. Критерий поиска:

images/69thStreet([0-9]+).jpg

Заменить термин:

images/xyz$1.jpg
4 голосов
/ 04 августа 2011

ОК, я предложил решение Notepad ++.
Для этого требуется установить плагин Notepad ++ PythonScript. Это TextPad-подобная инкрементная замена.

т.е.
Поиск и замена целочисленных значений в строке
постепенная замена, начиная с 1 (0 - начальное значение по умолчанию):

В вашем случае это будет
Поиск: ... images / 69thStreet [0-9] +. Jpg
Заменить: ... images / xyz00 \ i (1) .jpg

Установите плагин PythonScript.
Сохраните приведенный ниже код как PythonScript и свяжите с ним ярлык (т.е. Ctrl + i):
Затем откройте ваш HTML-файл в Notepad ++ и запустите приведенный ниже скрипт для вашего HTML-файла.
По запросу в диалоговом окне поиска и замены введите следующие 2 строки:
... изображения / 69thStreet [0-9] +. JPG
... images / xyz00 \ i (1) .jpg

Теперь все экземпляры
... изображения / 69thStreet010.jpg
... изображения / 69thStreet011.jpg
... images / 69thStreet012.jpg

станет
... изображения / xyz001.jpg
... изображения / xyz002.jpg
... images / xyz003.jpg

Вот код PythonScript

from Npp import *
import re, string

# First we'll start an undo action, then Ctrl-Z will undo the actions of the whole script
editor.beginUndoAction()

expression     = notepad.prompt("Enter the search string on the first line, followed by Ctrl+Enter, \n" +
                                "followed by the replace string on second line",
                                "Incremental Search/Replace" ,
                                "")

expressionList = re.split(r"[\n\r]+", expression)

if len(expressionList) == 2:
    foundCount = [0]

    def incrementalReplace(parmReplaceStr,parmFoundCount):
        varPatternI  = r'\\i\((?P<starting>[0-9]+)\)'
        varPatternIi = r'\\i'
        varPatternISearch = re.search(varPatternI , parmReplaceStr)

        if varPatternISearch != None:
            varFoundCount    = int(varPatternISearch.group('starting')) + parmFoundCount[0]
            varReplaceString = re.sub(varPatternI ,str(varFoundCount    ),parmReplaceStr)
        elif re.search(varPatternIi, parmReplaceStr) != None:
            varReplaceString = re.sub(varPatternIi,str(parmFoundCount[0]),parmReplaceStr)

        parmFoundCount[0] = parmFoundCount[0] + 1    
        return varReplaceString

    # Do a Python regular expression replace
    editor.searchAnchor()
    while editor.searchNext(0x00200000,expressionList[0]) != -1:
        editor.replaceSel(incrementalReplace(expressionList[1],foundCount))
        editor.lineDown() 
        editor.searchAnchor()

    # End the undo action, so Ctrl-Z will undo the above two actions
    editor.endUndoAction()
4 голосов
/ 14 апреля 2010

Я просто использую Excel & Notepad ++

Создать столбец с возрастающими числами в Excel. Затем в следующем (или предыдущем) столбце вставьте строку, которую вы хотите объединить с увеличивающимися числами. Например:

file00  |  1  |  .jpg
file00  |  2  |  .jpg

Etc.

Затем скопируйте / вставьте объект в Notepad ++ (или используйте функцию CONCATENATE в Excel, если задание простое) и выполните замену.

1 голос
/ 09 июля 2009

Пришло время изучать языки сценариев. Python / Ruby / Perl может сделать это в несколько строк, используя простые регулярные выражения и список каталогов.

0 голосов
/ 06 октября 2016

notepad ++ позволяет выполнять многострочное редактирование.Но главная проблема здесь заключается в том, чтобы как можно быстрее получить все имена файлов из каталога, в котором они находятся.

В прошлом у меня была похожая проблема, которую я решал таким образом.Это работает почти на всех версиях.

Чтобы составить список всех файлов в каталоге, создайте файл bat в самом каталоге.

скопируйте и вставьте туда следующий пакетный код

dir /b > filelist.txt

Сохраните файл с именем

makefilelist.bat

Не важно, какое имя вы ему дадите: важно расширение файла .bat

Двойной щелчок по файлу bat простосохранено: пакетный скрипт выполняет команду clean dir внутри каталога, в которой он выполняется, перенаправляя вывод в файл filelist.txt

Менее чем за одну секунду вы сохраняете вывод, сохраненный в filelist.txtбыть похожим на следующее:

filelist.txt
Image File Name 01.gif
Image File Name 02.gif
Image File Name 03.gif
Image File Name 04.gif
Image File Name 05.gif
Image File Name 06.gif
Image File Name 07.gif
Image File Name 08.gif
Image File Name 09.gif
Image File Name 10.gif
Image File Name 11.gif
Image File Name 12.gif
Image File Name 13.gif
Image File Name 14.gif
Image File Name 15.gif
Image File Name 16.gif
Image File Name 17.jpg
Image File Name 18.jpg
Image File Name 19.jpg
Image File Name 20.jpg
Image File Name 21.jpg
Image File Name 22.jpg
Image File Name 23.jpg
Image File Name 24.jpg
Image File Name 25.jpg
Image File Name 26.jpg
Image File Name 27.jpg
Image File Name 28.jpg
Image File Name 29.jpg
Image File Name 30.jpg
Image File Name 31.jpg
Image File Name 32.jpg
Image File Name 33.PNG
Image File Name 34.PNG
Image File Name 35.PNG
Image File Name 36.PNG
Image File Name 37.PNG
Image File Name 38.PNG
Image File Name 39.PNG
Image File Name 40.PNG
Image File Name 41.PNG
Image File Name 42.PNG
Image File Name 43.PNG
Image File Name 44.PNG
Image File Name 45.PNG
Image File Name 46.PNG
Image File Name 47.PNG
Image File Name 48.PNG
makelist.bat

Конечно, имена, вошедшие в список файлов, могут отличаться ... Сценарий регистрирует каждый файл, независимо от того, находится ли он в последовательности или нетили если его имя является случайным именем или содержит дату, время (отметку времени) и т. д .: оно регистрирует все, что находится в одном и том же каталоге, в котором выполняется ...

Теперь вы можете открыть filelist.txt с помощью notepad ++:фиСначала удалите строки списка, которые сообщают о нежелательных файлах:

makelist.bat

filelist.txt

Эта операция необходима, потому что сценарий перечисляет также сам и список файлов.txt.

Затем с помощью инструмента многострочного редактирования добавьте тег ко всем строкам за раз, или все остальное, необходимое для создания фотогалереи, даже массив javascript и т. д. ... в конце скопируйте и вставьтезакончил работу в вашем файле галереи изображений под кодированием.Готово.Легко, как выпить стакан воды: объяснить сложнее, чем сделать!Предоставляется.; -)


Улучшения:

Можно получить список только jpg-файлов, изменив пакетную команду, как показано ниже:

dir *.jpg /b > filelist.txt
Image File Name 17.jpg
Image File Name 18.jpg
Image File Name 19.jpg
Image File Name 20.jpg
Image File Name 21.jpg
Image File Name 22.jpg
Image File Name 23.jpg
Image File Name 24.jpg
Image File Name 25.jpg
Image File Name 26.jpg
Image File Name 27.jpg
Image File Name 28.jpg
Image File Name 29.jpg
Image File Name 30.jpg
Image File Name 31.jpg
Image File Name 32.jpg

То же самое с другими расширениями файлов.

0 голосов
/ 09 июля 2009

Есть. Создайте свой список фотографий, используя скрипт Python, который просматривает любой каталог, который вы хотите, и переименовывает или просто перечисляет все имена файлов. Затем перейдите к сценарию на языке Python, который генерирует необходимый вам HTML-код (на данном этапе это должно быть очень просто). Затем скопируйте и вставьте это.

Python очень прост в использовании, вы сможете скачать его за 5 минут и найти учебник для чтения / изменения имен файлов еще через 10 минут.

...