Get extensions inside directory bash










-2














Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.



cd $1

find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt









share|improve this question























  • See: Difference between single and double quotes in bash
    – Cyrus
    Nov 11 at 18:36










  • What exactly do you mean by "extension"? To avoid going into sub directories with find you could also use the maxdepth option, e.g.: find . -maxdepth 1 -type f
    – Håkon Hægland
    Nov 11 at 19:05











  • Is the cd performed in the same shell as find? Please provide a minimal directory structure and value for $1 that demonstrates the problem.
    – ikegami
    Nov 11 at 19:47















-2














Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.



cd $1

find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt









share|improve this question























  • See: Difference between single and double quotes in bash
    – Cyrus
    Nov 11 at 18:36










  • What exactly do you mean by "extension"? To avoid going into sub directories with find you could also use the maxdepth option, e.g.: find . -maxdepth 1 -type f
    – Håkon Hægland
    Nov 11 at 19:05











  • Is the cd performed in the same shell as find? Please provide a minimal directory structure and value for $1 that demonstrates the problem.
    – ikegami
    Nov 11 at 19:47













-2












-2








-2







Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.



cd $1

find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt









share|improve this question















Im trying to get all the extensions in the directory passed as $1 parameter.
The problem is that Im getting extensions that are not inside $1. I use cd command to get into the directory in the first line but it seems that it does not work.



cd $1

find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt






bash perl directory






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 11 at 18:37









Cyrus

45.2k43676




45.2k43676










asked Nov 11 at 18:31









user10599105

82




82











  • See: Difference between single and double quotes in bash
    – Cyrus
    Nov 11 at 18:36










  • What exactly do you mean by "extension"? To avoid going into sub directories with find you could also use the maxdepth option, e.g.: find . -maxdepth 1 -type f
    – Håkon Hægland
    Nov 11 at 19:05











  • Is the cd performed in the same shell as find? Please provide a minimal directory structure and value for $1 that demonstrates the problem.
    – ikegami
    Nov 11 at 19:47
















  • See: Difference between single and double quotes in bash
    – Cyrus
    Nov 11 at 18:36










  • What exactly do you mean by "extension"? To avoid going into sub directories with find you could also use the maxdepth option, e.g.: find . -maxdepth 1 -type f
    – Håkon Hægland
    Nov 11 at 19:05











  • Is the cd performed in the same shell as find? Please provide a minimal directory structure and value for $1 that demonstrates the problem.
    – ikegami
    Nov 11 at 19:47















See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36




See: Difference between single and double quotes in bash
– Cyrus
Nov 11 at 18:36












What exactly do you mean by "extension"? To avoid going into sub directories with find you could also use the maxdepth option, e.g.: find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05





What exactly do you mean by "extension"? To avoid going into sub directories with find you could also use the maxdepth option, e.g.: find . -maxdepth 1 -type f
– Håkon Hægland
Nov 11 at 19:05













Is the cd performed in the same shell as find? Please provide a minimal directory structure and value for $1 that demonstrates the problem.
– ikegami
Nov 11 at 19:47




Is the cd performed in the same shell as find? Please provide a minimal directory structure and value for $1 that demonstrates the problem.
– ikegami
Nov 11 at 19:47












2 Answers
2






active

oldest

votes


















0














You could try the following Perl command:



perl -MList::Util=uniq -sE '
chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
' -- -dir="$1" > "$1"-extensions.txt





share|improve this answer




























    0














    There's obviously something you're not saying, because there's no bug in find that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.



    $ find
    .
    ./foo
    ./foo/a.good
    ./a.bad
    ./script

    $ cat ./script
    #!/bin/bash
    cd $1
    find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt

    $ ./script foo

    $ cat foo/fooextensions.txt
    good
    txt <-- From the output file you created inside the directory in which you search.





    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%2f53251859%2fget-extensions-inside-directory-bash%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









      0














      You could try the following Perl command:



      perl -MList::Util=uniq -sE '
      chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
      ' -- -dir="$1" > "$1"-extensions.txt





      share|improve this answer

























        0














        You could try the following Perl command:



        perl -MList::Util=uniq -sE '
        chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
        ' -- -dir="$1" > "$1"-extensions.txt





        share|improve this answer























          0












          0








          0






          You could try the following Perl command:



          perl -MList::Util=uniq -sE '
          chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
          ' -- -dir="$1" > "$1"-extensions.txt





          share|improve this answer












          You could try the following Perl command:



          perl -MList::Util=uniq -sE '
          chdir $dir; say for uniq map /.([^./]+)$/ ? $1 : () grep -f, <*>;
          ' -- -dir="$1" > "$1"-extensions.txt






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 11 at 19:26









          Håkon Hægland

          14.9k124287




          14.9k124287























              0














              There's obviously something you're not saying, because there's no bug in find that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.



              $ find
              .
              ./foo
              ./foo/a.good
              ./a.bad
              ./script

              $ cat ./script
              #!/bin/bash
              cd $1
              find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt

              $ ./script foo

              $ cat foo/fooextensions.txt
              good
              txt <-- From the output file you created inside the directory in which you search.





              share|improve this answer



























                0














                There's obviously something you're not saying, because there's no bug in find that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.



                $ find
                .
                ./foo
                ./foo/a.good
                ./a.bad
                ./script

                $ cat ./script
                #!/bin/bash
                cd $1
                find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt

                $ ./script foo

                $ cat foo/fooextensions.txt
                good
                txt <-- From the output file you created inside the directory in which you search.





                share|improve this answer

























                  0












                  0








                  0






                  There's obviously something you're not saying, because there's no bug in find that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.



                  $ find
                  .
                  ./foo
                  ./foo/a.good
                  ./a.bad
                  ./script

                  $ cat ./script
                  #!/bin/bash
                  cd $1
                  find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt

                  $ ./script foo

                  $ cat foo/fooextensions.txt
                  good
                  txt <-- From the output file you created inside the directory in which you search.





                  share|improve this answer














                  There's obviously something you're not saying, because there's no bug in find that will list files outside of the specified directory, and there's no bug in your Perl program that will invent extensions.



                  $ find
                  .
                  ./foo
                  ./foo/a.good
                  ./a.bad
                  ./script

                  $ cat ./script
                  #!/bin/bash
                  cd $1
                  find . -type f | perl -ne 'print $1 if m/.([^./]+)$/' | sort -u > $1extensions.txt

                  $ ./script foo

                  $ cat foo/fooextensions.txt
                  good
                  txt <-- From the output file you created inside the directory in which you search.






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 12 at 4:21

























                  answered Nov 11 at 19:54









                  ikegami

                  261k11176396




                  261k11176396



























                      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.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • 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%2f53251859%2fget-extensions-inside-directory-bash%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

                      Darth Vader #20

                      How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

                      Ondo