Notepad ++ - Jak usunąć wszystko po ostatnim ukośniku „\” w wierszu pliku tekstowego

3

Mam listę około 30 000 plików (ze ścieżkami), które należy indywidualnie skopiować wraz ze strukturami folderów. Niestety ścieżki są bardzo długie, a narzędzia do kopiowania plików obsługujące tę funkcję wymagają określenia folderów docelowych dla każdego pliku, co oznacza, że ​​muszę usunąć nazwę pliku z każdego z 30 000 wierszy, pozostawiając nienaruszoną strukturę folderów.

Muszę znaleźć sposób na zastąpienie wyrażenia regularnego w Notepad ++, który usunie wszystkie dane w każdym wierszu dokumentu po ostatnim ukośniku odwrotnym „\” w wierszu.

Przykład:

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

Pożądane wyjście:

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

Jakieś pomysły na sformatowanie wyrażenia, aby to umożliwić? Próbowałem [^"\"]+$, ale wydaje się to nieważne.

Mike S.
źródło
3
\\ [^ \\] * $ nie robi lewy?
dvhh
Jeśli podasz więcej szczegółów na temat kopii, które zamierzasz wykonać, być może ktoś może pomóc w Robocopy, ma wiele funkcji.
SΛLVΘ

Odpowiedzi:

1

Możesz użyć grupy przechwytywania RegEx (oznaczonej nawiasami okrągłymi), aby przechwycić wszystkie znaki ( .*) aż do (i włącznie) ukośnika ( \\- musisz „uciec” ukośnikowi innym ukośnikiem), a także dołączyć resztę znaki w dopasowaniu Regex (drugi .*), ponieważ chcemy je również zastąpić.

Następnie zastąp całą linię zawartością (tylko) tej grupy przechwytywania ( \1).

Więc to działa dla mnie:

Odnaleźć: (.*\\).*

Zamienić: \1

Upewnij się, że „. Pasuje do nowej linii” jest wyłączone.

Ƭᴇcʜιᴇ007
źródło
0

Odpowiedziałem na własne pytanie, mam nadzieję, że pomoże to innej osobie próbującej skopiować określoną listę plików do ich oryginalnej struktury folderów. Edytuj listę w Notepad ++ i użyj funkcji zamiany (wybierz „Wyrażenie regularne”) i użyj następującego ciągu:

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

Zastąp to spacją i możesz zacząć.

Mike S.
źródło
Czy możesz rozwinąć to, co dokładnie robi RegEx?
Ƭᴇcʜιᴇ007
2
Skąd to spojrzenie? Spróbuj tego\\[^\\]+$
nixda,