我有一份包含大约 30,000 个文件(带路径)的列表,需要单独复制这些文件及其文件夹结构。不幸的是,这些路径非常长,而处理此功能的文件复制实用程序要求我为每个文件指定目标文件夹,这意味着我需要从 30,000 行中的每一行中删除文件名,而保留完整的文件夹结构。
我需要做的是通过 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
关于如何格式化表达式以允许这样做,您有什么想法吗?我试过了[^"\"]+$
,但似乎无效。
答案1
您可以使用 RegEx 捕获组(用圆括号表示)来捕获.*
直到(并包括)斜杠(\\
- 您需要用另一个斜杠“转义”斜杠)的所有字符(),并且还包括 Regex 匹配中的其余字符(第二个.*
),因为我们也想替换它们。
然后用该捕获组()的内容替换整行\1
。
所以这对我有用:
寻找:(.*\\).*
用。。。来代替:\1
确保“.匹配新行”被禁用。
答案2
我回答了自己的问题,希望这可以帮助其他人尝试将特定文件列表复制到其原始文件夹结构中。在 Notepad++ 中编辑列表并使用替换功能(选择“正则表达式”)并使用以下字符串:
\\(?<=\\)[^\\]+$
将其替换为空白就可以了。