Skip to content

Instantly share code, notes, and snippets.

@paul-d-ray
Last active June 24, 2025 02:38
Show Gist options
  • Save paul-d-ray/56c97097aa2a23bdb946b5b7856bac3d to your computer and use it in GitHub Desktop.
Save paul-d-ray/56c97097aa2a23bdb946b5b7856bac3d to your computer and use it in GitHub Desktop.
Nushell Get programs and versions

Nushell Program to get a list of programs

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
    

Code

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

Output

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

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
    ]
  ]
}

Screenshot

Screenshot_programs_versions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment