按字母顺序对文件名列表进行排序,但按扩展名分组

按字母顺序对文件名列表进行排序,但按扩展名分组

我有一个文本文件,其中包含文件名及其扩展名。

苹果.c
橙子.hpp
李子
.h 芒果
.c 香蕉.cpp
葡萄.hpp

我希望上述文本按字母顺序排序,但根据其扩展名分组:即,

苹果
.c 芒果
.c 香蕉.cpp
李子
.h 葡萄.hpp
橙子.hpp

我如何在 Notepad++ 中执行此操作?

我尝试了 TextFX 插件、Linesort 插件和列编辑器。Linesort 插件有一个从右侧对行进行排序的选项,但输出仍然不正确。

答案1

有一个插件“SQL”。它需要标题才能正确使用。我添加了标题,因此文本现在如下所示

COLUMN1.COLUMN2
apple.c
orange.hpp
plum.h
mango.c
banana.cpp
grapes.hpp

选择 N++ 菜单 --> 插件 --> SQL --> 开始

SQL 语句:从数据中选择列 1 c1、列 2 c2,按 c2、c1 排序
分隔符:。

点击‘执行 SQL’按钮。

将创建一个包含以下内容的新文件:

SQL Plugin 1.0.1025
Query         : select column1 c1,column2 c2 from data order by c2,c1
Sourcefile    : new 6
Delimiter     : .
Number of hits: 6
===================================================================================
Query result:
apple.c
mango.c
banana.cpp
plum.h
grapes.hpp
orange.hpp

答案2

除了非标准插件外,还有使用标准插件的方法文本特效许多用户发现 N++ 附带了此插件。它不是特别优雅,但确实有效:

苹果.c
橙色.hpp
梅花
芒果
香蕉.cpp
葡萄.hpp
  1. 使用查找/替换在文件名前添加扩展名
  • 找什么:^(.*\.(.*))$
  • 用。。。来代替:\2\t\1
  • 搜索模式:正则表达式
  • “. 匹配换行符”:未选中
c 苹果.c
hpp 橙色.hpp
h plum.h
c 芒果.c
cpp 香蕉.cpp
hpp 葡萄.hpp
  1. 编辑 → 线操作 → 排序
c 苹果.c
c 芒果.c
cpp 香蕉.cpp
h plum.h
hpp 葡萄.hpp
hpp 橙色.hpp
  1. 使用查找/替换删除临时列
  • 找什么:^.*\t(.*)$
  • 用。。。来代替:\1
  • 搜索模式:正则表达式
  • “. 匹配换行符”:未选中
苹果.c
芒果
香蕉.cpp
梅花
葡萄.hpp
橙色.hpp

相关内容