Getting only a repeating files from directory and subdirectories












1















I'm trying to do script for finding non-unique files.



The script should take one .csv file with data: name of files, LastWriteTime and Length. Then I try to make another .csv based on that one, which will contain only those objects whose combination of Name+Length+LastWriteTime is NON-unique.



I tried following script which uses $csvfile containing files list:



$csvdata = Import-Csv -Path $csvfile -Delimiter '|'
$csvdata |
Group-Object -Property Name, LastWriteTime, Length |
Where-Object -FilterScript { $_.Count -gt 1 } |
Select-Object -ExpandProperty Group -Unique |
Export-Csv $csvfile2 -Delimiter '|' -NoTypeInformation -Encoding Unicode


$csvfile was created by:



{
Get-ChildItem -Path $mainFolderPath -Recurse -File |
Sort-Object $sortMode |
Select-Object Name, LastWriteTime, Length, Directory |
Export-Csv $csvfile -Delimiter '|' -NoTypeInformation -Encoding Unicode
}

(Get-Content $csvfile) |
ForEach-Object { $_ -replace '"' } |
Out-File $csvfile -Encoding Unicode


But somehow in another $csvfile2 there is only the one (first) non-unique record. Does anyone have an idea how to improve it so it can list all non-unique records?










share|improve this question

























  • Select-Object -ExpandProperty Group -Unique -> Select-Object -ExpandProperty Group | Select-Object -Property * -Unique

    – Ansgar Wiechers
    Jan 20 at 0:04











  • Yay it work! Thank you I didnt consider using Select-Object to times. Good lesson for me!

    – Maks
    Jan 20 at 0:15
















1















I'm trying to do script for finding non-unique files.



The script should take one .csv file with data: name of files, LastWriteTime and Length. Then I try to make another .csv based on that one, which will contain only those objects whose combination of Name+Length+LastWriteTime is NON-unique.



I tried following script which uses $csvfile containing files list:



$csvdata = Import-Csv -Path $csvfile -Delimiter '|'
$csvdata |
Group-Object -Property Name, LastWriteTime, Length |
Where-Object -FilterScript { $_.Count -gt 1 } |
Select-Object -ExpandProperty Group -Unique |
Export-Csv $csvfile2 -Delimiter '|' -NoTypeInformation -Encoding Unicode


$csvfile was created by:



{
Get-ChildItem -Path $mainFolderPath -Recurse -File |
Sort-Object $sortMode |
Select-Object Name, LastWriteTime, Length, Directory |
Export-Csv $csvfile -Delimiter '|' -NoTypeInformation -Encoding Unicode
}

(Get-Content $csvfile) |
ForEach-Object { $_ -replace '"' } |
Out-File $csvfile -Encoding Unicode


But somehow in another $csvfile2 there is only the one (first) non-unique record. Does anyone have an idea how to improve it so it can list all non-unique records?










share|improve this question

























  • Select-Object -ExpandProperty Group -Unique -> Select-Object -ExpandProperty Group | Select-Object -Property * -Unique

    – Ansgar Wiechers
    Jan 20 at 0:04











  • Yay it work! Thank you I didnt consider using Select-Object to times. Good lesson for me!

    – Maks
    Jan 20 at 0:15














1












1








1








I'm trying to do script for finding non-unique files.



The script should take one .csv file with data: name of files, LastWriteTime and Length. Then I try to make another .csv based on that one, which will contain only those objects whose combination of Name+Length+LastWriteTime is NON-unique.



I tried following script which uses $csvfile containing files list:



$csvdata = Import-Csv -Path $csvfile -Delimiter '|'
$csvdata |
Group-Object -Property Name, LastWriteTime, Length |
Where-Object -FilterScript { $_.Count -gt 1 } |
Select-Object -ExpandProperty Group -Unique |
Export-Csv $csvfile2 -Delimiter '|' -NoTypeInformation -Encoding Unicode


$csvfile was created by:



{
Get-ChildItem -Path $mainFolderPath -Recurse -File |
Sort-Object $sortMode |
Select-Object Name, LastWriteTime, Length, Directory |
Export-Csv $csvfile -Delimiter '|' -NoTypeInformation -Encoding Unicode
}

(Get-Content $csvfile) |
ForEach-Object { $_ -replace '"' } |
Out-File $csvfile -Encoding Unicode


But somehow in another $csvfile2 there is only the one (first) non-unique record. Does anyone have an idea how to improve it so it can list all non-unique records?










share|improve this question
















I'm trying to do script for finding non-unique files.



The script should take one .csv file with data: name of files, LastWriteTime and Length. Then I try to make another .csv based on that one, which will contain only those objects whose combination of Name+Length+LastWriteTime is NON-unique.



I tried following script which uses $csvfile containing files list:



$csvdata = Import-Csv -Path $csvfile -Delimiter '|'
$csvdata |
Group-Object -Property Name, LastWriteTime, Length |
Where-Object -FilterScript { $_.Count -gt 1 } |
Select-Object -ExpandProperty Group -Unique |
Export-Csv $csvfile2 -Delimiter '|' -NoTypeInformation -Encoding Unicode


$csvfile was created by:



{
Get-ChildItem -Path $mainFolderPath -Recurse -File |
Sort-Object $sortMode |
Select-Object Name, LastWriteTime, Length, Directory |
Export-Csv $csvfile -Delimiter '|' -NoTypeInformation -Encoding Unicode
}

(Get-Content $csvfile) |
ForEach-Object { $_ -replace '"' } |
Out-File $csvfile -Encoding Unicode


But somehow in another $csvfile2 there is only the one (first) non-unique record. Does anyone have an idea how to improve it so it can list all non-unique records?







powershell csv unique get-childitem






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 20 at 10:35









Ansgar Wiechers

143k13129187




143k13129187










asked Jan 19 at 23:59









MaksMaks

103




103













  • Select-Object -ExpandProperty Group -Unique -> Select-Object -ExpandProperty Group | Select-Object -Property * -Unique

    – Ansgar Wiechers
    Jan 20 at 0:04











  • Yay it work! Thank you I didnt consider using Select-Object to times. Good lesson for me!

    – Maks
    Jan 20 at 0:15



















  • Select-Object -ExpandProperty Group -Unique -> Select-Object -ExpandProperty Group | Select-Object -Property * -Unique

    – Ansgar Wiechers
    Jan 20 at 0:04











  • Yay it work! Thank you I didnt consider using Select-Object to times. Good lesson for me!

    – Maks
    Jan 20 at 0:15

















Select-Object -ExpandProperty Group -Unique -> Select-Object -ExpandProperty Group | Select-Object -Property * -Unique

– Ansgar Wiechers
Jan 20 at 0:04





Select-Object -ExpandProperty Group -Unique -> Select-Object -ExpandProperty Group | Select-Object -Property * -Unique

– Ansgar Wiechers
Jan 20 at 0:04













Yay it work! Thank you I didnt consider using Select-Object to times. Good lesson for me!

– Maks
Jan 20 at 0:15





Yay it work! Thank you I didnt consider using Select-Object to times. Good lesson for me!

– Maks
Jan 20 at 0:15












1 Answer
1






active

oldest

votes


















0














You need to use -Property * -Unique to get a list of unique objects. However, you cannot use -Property and -ExpandProperty at the same time here, because you want the latter parameter to apply to the input objects ($_) and the former parameter to apply to an already expanded property of those input objects ($_.Group).



Expand the property Group first, then select the unique objects:



... |
Select-Object -ExpandProperty Group |
Select-Object -Property * -Unique |
...





share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    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
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54272418%2fgetting-only-a-repeating-files-from-directory-and-subdirectories%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You need to use -Property * -Unique to get a list of unique objects. However, you cannot use -Property and -ExpandProperty at the same time here, because you want the latter parameter to apply to the input objects ($_) and the former parameter to apply to an already expanded property of those input objects ($_.Group).



    Expand the property Group first, then select the unique objects:



    ... |
    Select-Object -ExpandProperty Group |
    Select-Object -Property * -Unique |
    ...





    share|improve this answer






























      0














      You need to use -Property * -Unique to get a list of unique objects. However, you cannot use -Property and -ExpandProperty at the same time here, because you want the latter parameter to apply to the input objects ($_) and the former parameter to apply to an already expanded property of those input objects ($_.Group).



      Expand the property Group first, then select the unique objects:



      ... |
      Select-Object -ExpandProperty Group |
      Select-Object -Property * -Unique |
      ...





      share|improve this answer




























        0












        0








        0







        You need to use -Property * -Unique to get a list of unique objects. However, you cannot use -Property and -ExpandProperty at the same time here, because you want the latter parameter to apply to the input objects ($_) and the former parameter to apply to an already expanded property of those input objects ($_.Group).



        Expand the property Group first, then select the unique objects:



        ... |
        Select-Object -ExpandProperty Group |
        Select-Object -Property * -Unique |
        ...





        share|improve this answer















        You need to use -Property * -Unique to get a list of unique objects. However, you cannot use -Property and -ExpandProperty at the same time here, because you want the latter parameter to apply to the input objects ($_) and the former parameter to apply to an already expanded property of those input objects ($_.Group).



        Expand the property Group first, then select the unique objects:



        ... |
        Select-Object -ExpandProperty Group |
        Select-Object -Property * -Unique |
        ...






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 20 at 10:52

























        answered Jan 20 at 10:33









        Ansgar WiechersAnsgar Wiechers

        143k13129187




        143k13129187






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • 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%2fstackoverflow.com%2fquestions%2f54272418%2fgetting-only-a-repeating-files-from-directory-and-subdirectories%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

            Liquibase includeAll doesn't find base path

            How to use setInterval in EJS file?

            Petrus Granier-Deferre