Блокнот ++ - Як видалити все після останньої зворотної косої риски "\" на рядку в текстовому файлі


3

У мене є список близько 30 000 файлів (із шляхами), які потрібно індивідуально скопіювати разом із структурами папок. На жаль, шляхи дуже довгі, і утиліти копіювання файлів, які будуть керувати цією функцією, вимагають, щоб я вказав папки призначення для кожного файлу, а це означає, що мені потрібно видалити ім’я файлу з кожного з 30000 рядків, залишаючи структуру папки недоторканою.

Що мені потрібно зробити - це знайти спосіб заміни звичайного виразу в Notepad ++, який видалить усі дані з кожного рядка документа після останнього "\" рядка в рядку.

Приклад:

C:\Data\ToCopy\file1.txt
C:\Data\ToCopy\Folder1\file2.txt
C:\Data\ToCopy\Folder2\file3.txt
C:\Data\ToCopy\Folder2\Subfolder1\file4.txt

Бажаний вихід:

C:\Data\ToCopy
C:\Data\ToCopy\Folder1
C:\Data\ToCopy\Folder2
C:\Data\ToCopy\Folder2\Subfolder1

Будь-які ідеї, як відформатувати вираз, щоб дозволити це? Я намагався [^"\"]+$, але це, здається, недійсне.


3
\\ [^ \\] * $ не робить трюку?
dvhh

Якщо ви дасте більше подробиць про копії, які ви збираєтеся робити, можливо, хтось може допомогти з роботокопією, у неї багато функцій.
SΛLVΘ

Відповіді:


1

Ви можете використовувати групу захоплення RegEx (позначається круглими дужками) для зйомки всіх символів ( .*) до (і включаючи) косою рисою ( \\- вам потрібно "втекти" косою рисою з іншою косою рисою), а також включити решту символів у збігу Regex (другий .*), оскільки ми також хочемо їх замінити.

Потім замініть весь рядок вмістом (тільки), що захоплює групу ( \1).

Отже, це працює для мене:

Знайти: (.*\\).*

Замінити: \1

Переконайтесь, що ". Відповідає новому рядку" вимкнено.


0

Я відповів на власне запитання, сподіваюся, що це допоможе комусь іншим, хто намагається роботокопіювати певний список файлів до їх початкової структури папок. Відредагуйте список у «Блокноті ++» та скористайтеся функцією заміни (виберіть «Регулярне вираження») та скористайтеся наступною рядком:

\\(?<=\\)[^\\]+$

Замініть це порожнім, і ви добре підете.


Чи можете ви розширити, що саме робить RegEx?
Ƭᴇcʜιᴇ007

2
Чому погляд позаду? Спробуйте це\\[^\\]+$
nixda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.