Ignoring folder with large number of directories












0















I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this



Get-ChildItem -Path $targetPath -Directory -Recurse |
Select-Object -ExpandProperty "Fullname" |
ForEach-Object {
#log folder name
}


However I want the script to skip directories that have a configured number of folders nested inside.



For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.




Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder C/Folder CA #DO NOT CAPTURE
Folder C/Folder CB #DO NOT CAPTURE
Folder C/Folder CC #DO NOT CAPTURE
Folder C/Folder CD #DO NOT CAPTURE
Folder D


So I would like my output of the script to be




Folder A/Folder AA
Folder A/Folder AB
Folder B/Folder BA
Folder D


How can I edit my script to achieve this?










share|improve this question





























    0















    I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this



    Get-ChildItem -Path $targetPath -Directory -Recurse |
    Select-Object -ExpandProperty "Fullname" |
    ForEach-Object {
    #log folder name
    }


    However I want the script to skip directories that have a configured number of folders nested inside.



    For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.




    Folder A/Folder AA
    Folder A/Folder AB
    Folder B/Folder BA
    Folder C/Folder CA #DO NOT CAPTURE
    Folder C/Folder CB #DO NOT CAPTURE
    Folder C/Folder CC #DO NOT CAPTURE
    Folder C/Folder CD #DO NOT CAPTURE
    Folder D


    So I would like my output of the script to be




    Folder A/Folder AA
    Folder A/Folder AB
    Folder B/Folder BA
    Folder D


    How can I edit my script to achieve this?










    share|improve this question



























      0












      0








      0








      I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this



      Get-ChildItem -Path $targetPath -Directory -Recurse |
      Select-Object -ExpandProperty "Fullname" |
      ForEach-Object {
      #log folder name
      }


      However I want the script to skip directories that have a configured number of folders nested inside.



      For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.




      Folder A/Folder AA
      Folder A/Folder AB
      Folder B/Folder BA
      Folder C/Folder CA #DO NOT CAPTURE
      Folder C/Folder CB #DO NOT CAPTURE
      Folder C/Folder CC #DO NOT CAPTURE
      Folder C/Folder CD #DO NOT CAPTURE
      Folder D


      So I would like my output of the script to be




      Folder A/Folder AA
      Folder A/Folder AB
      Folder B/Folder BA
      Folder D


      How can I edit my script to achieve this?










      share|improve this question
















      I have written a PowerShell script that traverses over a directory and captures a list of folder names that are nested inside. It uses the following loop to achieve this



      Get-ChildItem -Path $targetPath -Directory -Recurse |
      Select-Object -ExpandProperty "Fullname" |
      ForEach-Object {
      #log folder name
      }


      However I want the script to skip directories that have a configured number of folders nested inside.



      For example in the following example I do not want to capture the 'Folder C' because it has more than 3 folders nested.




      Folder A/Folder AA
      Folder A/Folder AB
      Folder B/Folder BA
      Folder C/Folder CA #DO NOT CAPTURE
      Folder C/Folder CB #DO NOT CAPTURE
      Folder C/Folder CC #DO NOT CAPTURE
      Folder C/Folder CD #DO NOT CAPTURE
      Folder D


      So I would like my output of the script to be




      Folder A/Folder AA
      Folder A/Folder AB
      Folder B/Folder BA
      Folder D


      How can I edit my script to achieve this?







      powershell






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 16 '18 at 10:45









      Ansgar Wiechers

      146k13132190




      146k13132190










      asked Nov 16 '18 at 10:29









      L1ngL1ng

      154




      154
























          1 Answer
          1






          active

          oldest

          votes


















          2














          If you just want to exclude folders on the top level you could do something like this:



          Get-ChildItem -Path $targetPath -Directory | Where-Object {
          (Get-ChildItem $_.FullName -Directory).Count -le 3
          } | ForEach-Object {
          Get-ChildItem $_.FullName -Directory -Recurse
          } | Select-Object -Expand Fullname


          If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem does not provide that kind of filtering mechanism.






          share|improve this answer
























          • Thank you - I had to resort to writing my own recursion.

            – L1ng
            Nov 20 '18 at 21:47












          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%2f53335963%2fignoring-folder-with-large-number-of-directories%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









          2














          If you just want to exclude folders on the top level you could do something like this:



          Get-ChildItem -Path $targetPath -Directory | Where-Object {
          (Get-ChildItem $_.FullName -Directory).Count -le 3
          } | ForEach-Object {
          Get-ChildItem $_.FullName -Directory -Recurse
          } | Select-Object -Expand Fullname


          If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem does not provide that kind of filtering mechanism.






          share|improve this answer
























          • Thank you - I had to resort to writing my own recursion.

            – L1ng
            Nov 20 '18 at 21:47
















          2














          If you just want to exclude folders on the top level you could do something like this:



          Get-ChildItem -Path $targetPath -Directory | Where-Object {
          (Get-ChildItem $_.FullName -Directory).Count -le 3
          } | ForEach-Object {
          Get-ChildItem $_.FullName -Directory -Recurse
          } | Select-Object -Expand Fullname


          If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem does not provide that kind of filtering mechanism.






          share|improve this answer
























          • Thank you - I had to resort to writing my own recursion.

            – L1ng
            Nov 20 '18 at 21:47














          2












          2








          2







          If you just want to exclude folders on the top level you could do something like this:



          Get-ChildItem -Path $targetPath -Directory | Where-Object {
          (Get-ChildItem $_.FullName -Directory).Count -le 3
          } | ForEach-Object {
          Get-ChildItem $_.FullName -Directory -Recurse
          } | Select-Object -Expand Fullname


          If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem does not provide that kind of filtering mechanism.






          share|improve this answer













          If you just want to exclude folders on the top level you could do something like this:



          Get-ChildItem -Path $targetPath -Directory | Where-Object {
          (Get-ChildItem $_.FullName -Directory).Count -le 3
          } | ForEach-Object {
          Get-ChildItem $_.FullName -Directory -Recurse
          } | Select-Object -Expand Fullname


          If you want to exclude any (sub)folder that contains more than 3 subfolders you'll have to implement the recursion yourself. Get-ChildItem does not provide that kind of filtering mechanism.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 16 '18 at 10:50









          Ansgar WiechersAnsgar Wiechers

          146k13132190




          146k13132190













          • Thank you - I had to resort to writing my own recursion.

            – L1ng
            Nov 20 '18 at 21:47



















          • Thank you - I had to resort to writing my own recursion.

            – L1ng
            Nov 20 '18 at 21:47

















          Thank you - I had to resort to writing my own recursion.

          – L1ng
          Nov 20 '18 at 21:47





          Thank you - I had to resort to writing my own recursion.

          – L1ng
          Nov 20 '18 at 21:47




















          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%2f53335963%2fignoring-folder-with-large-number-of-directories%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

          Xamarin.iOS Cant Deploy on Iphone

          Glorious Revolution

          Dulmage-Mendelsohn matrix decomposition in Python