This code use the parse, group-by, and sort-by Nushell commands to get a list of programs, and version.
The folder I keep programs has the program name with the version.
- example filenames
dopusinstall64_13.16_00_00.exe Joplin-Setup-3.3.12.exe NtWind_Alttabter_6.5-setup.exe ntwind_clipboardremote_1.0.3-win-x64.exe ntwind_screenshotremote_1.0.9-win-x64.exe
When you add a program, create a new parse line.
nuls d:/work/tools |
where type == file and name =~ "(alttabter|clipboard|dopusin|^joplin|^keepass|^nu|^power|screenshotremote|stable|^ue|^uc|vivaldi)" |
sort-by modified |
insert program { |row|
match true {
_ if ($row.name | str contains 'alttabter') => ($row.name | parse "ntwind_{product}_{version}-setup.exe"),
_ if ($row.name | str contains 'clipboardremote') => ($row.name | parse "ntwind_{product}_{version}-win-x64.exe"),
_ if ($row.name | str contains 'screenshotremote') => ($row.name | parse "ntwind_{product}_{version}-win-x64.exe"),
_ if ($row.name | str starts-with 'dopusin') => ($row.name | parse "{product}install64{version}.exe"),
_ if ($row.name | str starts-with 'joplin') => ($row.name | parse "{product}-setup-{version}.exe"),
_ if ($row.name | str starts-with 'keepass') => ($row.name | parse "{product}-{version}-win64.msi"),
_ if ($row.name | str starts-with 'nu') => ($row.name | parse "{product}-{version}-x86_64-pc-windows-msvc.msi"),
_ if ($row.name | str starts-with 'power') => ($row.name | parse "{product}setup-{version}-x64.exe"),
_ if ($row.name | str starts-with 'stable') => ($row.name | parse "stablebit.{product}_{version}_x64_release.exe"),
_ if ($row.name | str starts-with 'uc') => ($row.name | parse "{product}_english_x64_{version}.exe"),
_ if ($row.name | str starts-with 'ue') => ($row.name | parse "{product}_english_x64_{version}.exe"),
_ if ($row.name | str starts-with 'vivaldi') => ($row.name | parse "{product}.{version}.x64.exe"),
_ => []
}
} |
select program.product program.version modified size |
rename product version modified size |
update product { |row| $row.product | get 0 } |
update version { |row| $row.version | get 0 } |
select size modified version product |
sort-by product |
group-by product
To save to a nuon file (like json),
append to nuon -i 2 | save -f yourfilename.nuon
to the end of the command.
nuls d:/work/tools |
where type == file and name =~ "(alttabter|clipboard|dopusin|^joplin|^keepass|^nu|^power|screenshotremote|stable|^ue|^uc|vivaldi)" |
sort-by modified |
insert program { |row|
match true {
_ if ($row.name | str contains 'alttabter') => ($row.name | parse "ntwind_{product}_{version}-setup.exe"),
_ if ($row.name | str contains 'clipboardremote') => ($row.name | parse "ntwind_{product}_{version}-win-x64.exe"),
_ if ($row.name | str contains 'screenshotremote') => ($row.name | parse "ntwind_{product}_{version}-win-x64.exe"),
_ if ($row.name | str starts-with 'dopusin') => ($row.name | parse "{product}install64{version}.exe"),
_ if ($row.name | str starts-with 'joplin') => ($row.name | parse "{product}-setup-{version}.exe"),
_ if ($row.name | str starts-with 'keepass') => ($row.name | parse "{product}-{version}-win64.msi"),
_ if ($row.name | str starts-with 'nu') => ($row.name | parse "{product}-{version}-x86_64-pc-windows-msvc.msi"),
_ if ($row.name | str starts-with 'power') => ($row.name | parse "{product}setup-{version}-x64.exe"),
_ if ($row.name | str starts-with 'stable') => ($row.name | parse "stablebit.{product}_{version}_x64_release.exe"),
_ if ($row.name | str starts-with 'uc') => ($row.name | parse "{product}_english_x64_{version}.exe"),
_ if ($row.name | str starts-with 'ue') => ($row.name | parse "{product}_english_x64_{version}.exe"),
_ if ($row.name | str starts-with 'vivaldi') => ($row.name | parse "{product}.{version}.x64.exe"),
_ => []
}
} |
select program.product program.version modified size |
rename product version modified size |
update product { |row| $row.product | get 0 } |
update version { |row| $row.version | get 0 } |
select size modified version product |
sort-by product |
group-by product | to nuon -i 2 | save -f yourfilename.nuon
{
alttabter: [
[
size,
modified,
version,
product
];
[
3075912b,
2023-11-30T13:51:27.658813700-05:00,
"6.4",
alttabter
],
[
3084280b,
2025-02-11T17:49:48.728172200-05:00,
"6.5",
alttabter
]
],
clipboardremote: [
[
size,
modified,
version,
product
];
[
11847944b,
2025-02-11T18:03:35.003809300-05:00,
"1.0.2",
clipboardremote
],
[
11855752b,
2025-05-11T12:18:12.422875800-04:00,
"1.0.3",
clipboardremote
]
],
clouddrive: [
[
size,
modified,
version,
product
];
[
64665696b,
2024-07-02T17:31:21.538621900-04:00,
"1.2.8.1771",
clouddrive
],
[
64671992b,
2024-10-30T20:55:07.997815300-04:00,
"1.2.10.1801",
clouddrive
],
[
64690496b,
2025-06-16T23:19:33.209734400-04:00,
"1.2.12.1836",
clouddrive
]
],
dopus: [
[
size,
modified,
version,
product
];
[
40320568b,
2023-10-21T08:04:42.405353200-04:00,
"12_33_00_00",
dopus
],
[
24502536b,
2024-12-21T00:52:19.911304700-05:00,
"13.12_00_00",
dopus
],
[
24530592b,
2025-02-18T17:25:51.508418200-05:00,
"13.13_00_00",
dopus
],
[
28067248b,
2025-05-08T20:52:50.333745600-04:00,
"13.15_00_00",
dopus
],
[
27460424b,
2025-06-10T11:12:07.751390900-04:00,
"13.16_00_00",
dopus
]
],
drivepool: [
[
size,
modified,
version,
product
];
[
55219392b,
2024-07-02T17:31:56.961085500-04:00,
"2.3.8.1600",
drivepool
],
[
55242264b,
2024-10-30T20:55:29.697044400-04:00,
"2.3.10.1661",
drivepool
],
[
55254048b,
2025-06-16T23:19:05.759143500-04:00,
"2.3.12.1683",
drivepool
]
],
joplin: [
[
size,
modified,
version,
product
];
[
259592552b,
2024-08-25T20:34:44.246455-04:00,
"3.0.15",
joplin
],
[
330218728b,
2025-01-23T21:07:38.944310900-05:00,
"3.2.12",
joplin
],
[
336187368b,
2025-05-02T13:18:42.778962900-04:00,
"3.3.9",
joplin
],
[
336235376b,
2025-05-04T21:40:38.823739100-04:00,
"3.3.12",
joplin
]
],
keepassxc: [
[
size,
modified,
version,
product
];
[
34451456b,
2024-05-06T07:17:09.994428300-04:00,
"2.7.8",
keepassxc
],
[
34394112b,
2024-06-19T17:38:00-04:00,
"2.7.9",
keepassxc
],
[
34897920b,
2025-03-02T17:38:00-05:00,
"2.7.10",
keepassxc
]
],
nu: [
[
size,
modified,
version,
product
];
[
28348416b,
2024-10-24T17:01:59.729354500-04:00,
"0.99.1",
nu
],
[
30081024b,
2024-11-13T20:22:55.425890800-05:00,
"0.100.0",
nu
],
[
30535680b,
2024-12-22T17:11:16-05:00,
"0.101.0",
nu
],
[
35766272b,
2025-02-07T22:45:45.789121900-05:00,
"0.102.0",
nu
],
[
36327424b,
2025-03-18T18:30:00-04:00,
"0.103.0",
nu
],
[
36978688b,
2025-04-29T20:10:00-04:00,
"0.104.0",
nu
],
[
33488896b,
2025-06-10T22:43:55.261520900-04:00,
"0.105.0",
nu
]
],
powertoys: [
[
size,
modified,
version,
product
];
[
284275216b,
2024-11-04T20:01:13.490053800-05:00,
"0.86.0",
powertoys
],
[
288241952b,
2025-02-18T18:21:49.224814900-05:00,
"0.88.0",
powertoys
],
[
401309856b,
2025-04-10T17:24:24.417644300-04:00,
"0.90.1",
powertoys
],
[
405948616b,
2025-05-19T21:52:46.145000800-04:00,
"0.91.1",
powertoys
]
],
scanner: [
[
size,
modified,
version,
product
];
[
77289480b,
2024-07-02T17:32:12.965244600-04:00,
"2.6.9.4059",
scanner
],
[
77301464b,
2024-10-30T20:55:55.439752400-04:00,
"2.6.11.4077",
scanner
],
[
77314296b,
2025-06-16T23:19:41.692771-04:00,
"2.6.12.4085",
scanner
]
],
screenshotremote: [
[
size,
modified,
version,
product
];
[
11299000b,
2025-02-11T18:03:46.593592400-05:00,
"1.0.8",
screenshotremote
],
[
11305720b,
2025-05-11T12:18:47.303144600-04:00,
"1.0.9",
screenshotremote
]
],
uc: [
[
size,
modified,
version,
product
];
[
48659736b,
2023-06-06T13:10:00.056408700-04:00,
"2300_0030",
uc
],
[
49441072b,
2023-12-05T16:47:56.562486800-05:00,
"2310_0023",
uc
],
[
62074640b,
2024-06-09T22:14:00.631432400-04:00,
"2400_0023",
uc
],
[
62120648b,
2024-09-25T19:30:00-04:00,
"2400_0026",
uc
],
[
62290288b,
2025-02-10T17:10:00-05:00,
"2410_0005",
uc
]
],
ue: [
[
size,
modified,
version,
product
];
[
114817504b,
2024-04-23T12:21:48.717307600-04:00,
"3100_0028",
ue
],
[
112721464b,
2024-06-09T22:10:52.033050600-04:00,
"3100_0035",
ue
],
[
112766912b,
2024-08-19T14:40:56.146581600-04:00,
"3100_0044",
ue
],
[
112863400b,
2024-09-02T09:21:44.511108100-04:00,
"3110_0032",
ue
],
[
112843640b,
2024-10-09T20:15:23.500348400-04:00,
"3110_0036",
ue
],
[
112887008b,
2024-12-23T22:59:28.455336200-05:00,
"3120_0039",
ue
],
[
112897512b,
2025-01-19T17:59:26.412719500-05:00,
"3120_0044",
ue
],
[
112904856b,
2025-02-20T18:10:00-05:00,
"3130_0008",
ue
],
[
112906488b,
2025-03-21T19:10:00-04:00,
"3130_0013",
ue
],
[
112910272b,
2025-04-25T20:10:00-04:00,
"3130_0015",
ue
],
[
114165104b,
2025-06-10T16:56:30.566522600-04:00,
"3200_0024",
ue
]
],
vivaldi: [
[
size,
modified,
version,
product
];
[
129261192b,
2024-12-05T21:22:40.327644300-05:00,
"7.0.3495.23",
vivaldi
],
[
130797192b,
2025-02-11T20:10:07.017647100-05:00,
"7.1.3570.48",
vivaldi
],
[
130920072b,
2025-02-13T22:00:40.659471400-05:00,
"7.1.3570.50",
vivaldi
],
[
129151112b,
2025-03-24T17:59:17.122868100-04:00,
"7.2.3621.67",
vivaldi
],
[
129214600b,
2025-04-11T15:45:55.738471-04:00,
"7.3.3635.9",
vivaldi
],
[
130806384b,
2025-05-29T07:04:15.714118300-04:00,
"7.4.3684.43",
vivaldi
]
]
}