How to edit “Name” property in GCI output with regex





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







5















# Microsoft Windows [Version 10.0.17134.648] 
# powershell 5.1.17134.48
# parse Notepad++ "backup on save" filenames.
# dir directory. Include index*,avail* where the last write time is less than
# 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
# Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
# Start it in your directory of choice.
$time = (Get-Date).AddDays(-4)
gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders


outputs:



available13.html    93130 3/26/2019 8  :  10  :  05 AM
index.html 39386 3/26/2019 8 : 10 : 05 AM


If I use:



$time = (Get-Date).AddDays(-4)
gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | format-table -HideTableHeaders Name,Length,LastWriteTime


I get:



available13.html.2019-03-26_081523.bak  93130 3/26/2019 8  :  10  :  05 AM
index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


Microsoft Windows [Version 10.0.17134.648]

powershell 5.1.17134.48

Parse NPP / Notepad++ / Notepad Plus "backup on save" filenames.

dir directory. Include index*,avail* where the last write time is less than 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.

Can be used as a shortcut:
powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
Start it in your directory of choice.



I use Notepad++ "backup on save" feature to bill my clients for time I work on their website. This script creates a formatted table output with the filenames, size, date and the extent of the time the file was worked on.



See LotPings answer below for information about the name parse.










share|improve this question









New contributor




somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



























    5















    # Microsoft Windows [Version 10.0.17134.648] 
    # powershell 5.1.17134.48
    # parse Notepad++ "backup on save" filenames.
    # dir directory. Include index*,avail* where the last write time is less than
    # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
    # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
    # Start it in your directory of choice.
    $time = (Get-Date).AddDays(-4)
    gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders


    outputs:



    available13.html    93130 3/26/2019 8  :  10  :  05 AM
    index.html 39386 3/26/2019 8 : 10 : 05 AM


    If I use:



    $time = (Get-Date).AddDays(-4)
    gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | format-table -HideTableHeaders Name,Length,LastWriteTime


    I get:



    available13.html.2019-03-26_081523.bak  93130 3/26/2019 8  :  10  :  05 AM
    index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


    Microsoft Windows [Version 10.0.17134.648]

    powershell 5.1.17134.48

    Parse NPP / Notepad++ / Notepad Plus "backup on save" filenames.

    dir directory. Include index*,avail* where the last write time is less than 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.

    Can be used as a shortcut:
    powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
    Start it in your directory of choice.



    I use Notepad++ "backup on save" feature to bill my clients for time I work on their website. This script creates a formatted table output with the filenames, size, date and the extent of the time the file was worked on.



    See LotPings answer below for information about the name parse.










    share|improve this question









    New contributor




    somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      5












      5








      5


      0






      # Microsoft Windows [Version 10.0.17134.648] 
      # powershell 5.1.17134.48
      # parse Notepad++ "backup on save" filenames.
      # dir directory. Include index*,avail* where the last write time is less than
      # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
      # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
      # Start it in your directory of choice.
      $time = (Get-Date).AddDays(-4)
      gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders


      outputs:



      available13.html    93130 3/26/2019 8  :  10  :  05 AM
      index.html 39386 3/26/2019 8 : 10 : 05 AM


      If I use:



      $time = (Get-Date).AddDays(-4)
      gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | format-table -HideTableHeaders Name,Length,LastWriteTime


      I get:



      available13.html.2019-03-26_081523.bak  93130 3/26/2019 8  :  10  :  05 AM
      index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


      Microsoft Windows [Version 10.0.17134.648]

      powershell 5.1.17134.48

      Parse NPP / Notepad++ / Notepad Plus "backup on save" filenames.

      dir directory. Include index*,avail* where the last write time is less than 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.

      Can be used as a shortcut:
      powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
      Start it in your directory of choice.



      I use Notepad++ "backup on save" feature to bill my clients for time I work on their website. This script creates a formatted table output with the filenames, size, date and the extent of the time the file was worked on.



      See LotPings answer below for information about the name parse.










      share|improve this question









      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      # Microsoft Windows [Version 10.0.17134.648] 
      # powershell 5.1.17134.48
      # parse Notepad++ "backup on save" filenames.
      # dir directory. Include index*,avail* where the last write time is less than
      # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
      # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
      # Start it in your directory of choice.
      $time = (Get-Date).AddDays(-4)
      gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders


      outputs:



      available13.html    93130 3/26/2019 8  :  10  :  05 AM
      index.html 39386 3/26/2019 8 : 10 : 05 AM


      If I use:



      $time = (Get-Date).AddDays(-4)
      gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | format-table -HideTableHeaders Name,Length,LastWriteTime


      I get:



      available13.html.2019-03-26_081523.bak  93130 3/26/2019 8  :  10  :  05 AM
      index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


      Microsoft Windows [Version 10.0.17134.648]

      powershell 5.1.17134.48

      Parse NPP / Notepad++ / Notepad Plus "backup on save" filenames.

      dir directory. Include index*,avail* where the last write time is less than 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.

      Can be used as a shortcut:
      powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where {$_.LastWriteTime -gt $time} | Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Length,LastWriteTime -HideTableHeaders
      Start it in your directory of choice.



      I use Notepad++ "backup on save" feature to bill my clients for time I work on their website. This script creates a formatted table output with the filenames, size, date and the extent of the time the file was worked on.



      See LotPings answer below for information about the name parse.







      windows-10 powershell text-editing






      share|improve this question









      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 8 hours ago







      somebadhat













      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked Mar 30 at 15:59









      somebadhatsomebadhat

      687




      687




      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          2 Answers
          2






          active

          oldest

          votes


















          4














          I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



          This can be done with a calculated property either in a Select-Object or also in a Format-*



          Get-ChildItem -File | 
          Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Name -HideTableHeaders


          Sample output:



          available13.html available13.html.2019-03-26_081523.bak
          index.html index.html.2019-03-26_081538.bak





          share|improve this answer































            4














            You can add a new property with Add-Member like this



            $time = (Get-Date).AddDays(-4)
            $files = gci * -include index*,avail* | where {$_.LastWriteTime -gt $time}
            foreach ($f in $files) {
            $f | Add-Member noteproperty newName -Value `
            $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)
            }
            $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


            Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






            share|improve this answer


























            • @LotPings I choose LotPings answer because it would have been the answer if I had asked a better question. Thanks for taking the time. Your code works.

              – somebadhat
              yesterday












            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "3"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            somebadhat is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1419414%2fhow-to-edit-name-property-in-gci-output-with-regex%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            4














            I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



            This can be done with a calculated property either in a Select-Object or also in a Format-*



            Get-ChildItem -File | 
            Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Name -HideTableHeaders


            Sample output:



            available13.html available13.html.2019-03-26_081523.bak
            index.html index.html.2019-03-26_081538.bak





            share|improve this answer




























              4














              I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



              This can be done with a calculated property either in a Select-Object or also in a Format-*



              Get-ChildItem -File | 
              Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Name -HideTableHeaders


              Sample output:



              available13.html available13.html.2019-03-26_081523.bak
              index.html index.html.2019-03-26_081538.bak





              share|improve this answer


























                4












                4








                4







                I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



                This can be done with a calculated property either in a Select-Object or also in a Format-*



                Get-ChildItem -File | 
                Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Name -HideTableHeaders


                Sample output:



                available13.html available13.html.2019-03-26_081523.bak
                index.html index.html.2019-03-26_081538.bak





                share|improve this answer













                I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



                This can be done with a calculated property either in a Select-Object or also in a Format-*



                Get-ChildItem -File | 
                Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*.html).*$'}},Name -HideTableHeaders


                Sample output:



                available13.html available13.html.2019-03-26_081523.bak
                index.html index.html.2019-03-26_081538.bak






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 30 at 16:35









                LotPingsLotPings

                5,2251823




                5,2251823

























                    4














                    You can add a new property with Add-Member like this



                    $time = (Get-Date).AddDays(-4)
                    $files = gci * -include index*,avail* | where {$_.LastWriteTime -gt $time}
                    foreach ($f in $files) {
                    $f | Add-Member noteproperty newName -Value `
                    $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)
                    }
                    $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                    Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






                    share|improve this answer


























                    • @LotPings I choose LotPings answer because it would have been the answer if I had asked a better question. Thanks for taking the time. Your code works.

                      – somebadhat
                      yesterday
















                    4














                    You can add a new property with Add-Member like this



                    $time = (Get-Date).AddDays(-4)
                    $files = gci * -include index*,avail* | where {$_.LastWriteTime -gt $time}
                    foreach ($f in $files) {
                    $f | Add-Member noteproperty newName -Value `
                    $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)
                    }
                    $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                    Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






                    share|improve this answer


























                    • @LotPings I choose LotPings answer because it would have been the answer if I had asked a better question. Thanks for taking the time. Your code works.

                      – somebadhat
                      yesterday














                    4












                    4








                    4







                    You can add a new property with Add-Member like this



                    $time = (Get-Date).AddDays(-4)
                    $files = gci * -include index*,avail* | where {$_.LastWriteTime -gt $time}
                    foreach ($f in $files) {
                    $f | Add-Member noteproperty newName -Value `
                    $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)
                    }
                    $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                    Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






                    share|improve this answer















                    You can add a new property with Add-Member like this



                    $time = (Get-Date).AddDays(-4)
                    $files = gci * -include index*,avail* | where {$_.LastWriteTime -gt $time}
                    foreach ($f in $files) {
                    $f | Add-Member noteproperty newName -Value `
                    $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)
                    }
                    $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                    Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Mar 30 at 16:47

























                    answered Mar 30 at 16:40









                    phuclvphuclv

                    10.6k64297




                    10.6k64297













                    • @LotPings I choose LotPings answer because it would have been the answer if I had asked a better question. Thanks for taking the time. Your code works.

                      – somebadhat
                      yesterday



















                    • @LotPings I choose LotPings answer because it would have been the answer if I had asked a better question. Thanks for taking the time. Your code works.

                      – somebadhat
                      yesterday

















                    @LotPings I choose LotPings answer because it would have been the answer if I had asked a better question. Thanks for taking the time. Your code works.

                    – somebadhat
                    yesterday





                    @LotPings I choose LotPings answer because it would have been the answer if I had asked a better question. Thanks for taking the time. Your code works.

                    – somebadhat
                    yesterday










                    somebadhat is a new contributor. Be nice, and check out our Code of Conduct.










                    draft saved

                    draft discarded


















                    somebadhat is a new contributor. Be nice, and check out our Code of Conduct.













                    somebadhat is a new contributor. Be nice, and check out our Code of Conduct.












                    somebadhat is a new contributor. Be nice, and check out our Code of Conduct.
















                    Thanks for contributing an answer to Super User!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1419414%2fhow-to-edit-name-property-in-gci-output-with-regex%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Plaza Victoria

                    Puebla de Zaragoza

                    Musa