Is it possible to search for a directory/file combination? The 2019 Stack Overflow Developer Survey Results Are InFind path that has specific sub directoryksh:Linux - Command to find a particular directory/fileIs there a way to find a file in an inverse recursive search?Find images by size: find / file / awkExclude directory in findHow do I search all subdirectories to find one with a certain name?Efficiently finding a file/directory based on keywordIdentify sub-directories that do not contain a specific string in a specific fileHow to use the results of “file” (Name of Creating Application: Microsoft Word) to search for a specific string?Search for files within a directoryfind a file through particular search in while loopCreating text files in every sub-directory

Can withdrawing asylum be illegal?

Do ℕ, mathbbN, BbbN, symbbN effectively differ, and is there a "canonical" specification of the naturals?

Humiliated in front of employees

Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?

60's-70's movie: home appliances revolting against the owners

Can I visit the Trinity College (Cambridge) library and see some of their rare books

Variable with quotation marks "$()"

Make it rain characters

Am I ethically obligated to go into work on an off day if the reason is sudden?

How to fill page vertically?

Mortgage adviser recommends a longer term than necessary combined with overpayments

How to substitute curly brackets with round brackets in a grid of list

What other Star Trek series did the main TNG cast show up in?

Define a list range inside a list

Why are Marketing Cloud timestamps not stored in the same timezone as Sales Cloud?

How do you keep chess fun when your opponent constantly beats you?

Is every episode of "Where are my Pants?" identical?

Categorical vs continuous feature selection/engineering

Grounding Vcc and Vee?

Free operad over a monoid object

Word for: a synonym with a positive connotation?

Why can't devices on different VLANs, but on the same subnet, communicate?

What do I do when my TA workload is more than expected?

Cooking pasta in a water boiler



Is it possible to search for a directory/file combination?



The 2019 Stack Overflow Developer Survey Results Are InFind path that has specific sub directoryksh:Linux - Command to find a particular directory/fileIs there a way to find a file in an inverse recursive search?Find images by size: find / file / awkExclude directory in findHow do I search all subdirectories to find one with a certain name?Efficiently finding a file/directory based on keywordIdentify sub-directories that do not contain a specific string in a specific fileHow to use the results of “file” (Name of Creating Application: Microsoft Word) to search for a specific string?Search for files within a directoryfind a file through particular search in while loopCreating text files in every sub-directory



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








11















I need to find an image, say ABC.jpg, that I know will have been programmatically placed into a directory named ABC_MPSC. I've tried:



cd /
find . -name "ABC_MPSC/ABC.jpg"


But that doesn't return anything (I actually know where the particular one I'm searching for is, so I know it exists). Is there a find command that could allow me not have to search manually?










share|improve this question
























  • Very similar: unix.stackexchange.com/q/342392/117549; also: unix.stackexchange.com/q/352844/117549

    – Jeff Schaller
    Mar 29 at 18:31







  • 2





    You can also find it using locate, which should be significantly faster, but only works if the file already existed when updatedb was last run.

    – Simon Richter
    Mar 29 at 20:01


















11















I need to find an image, say ABC.jpg, that I know will have been programmatically placed into a directory named ABC_MPSC. I've tried:



cd /
find . -name "ABC_MPSC/ABC.jpg"


But that doesn't return anything (I actually know where the particular one I'm searching for is, so I know it exists). Is there a find command that could allow me not have to search manually?










share|improve this question
























  • Very similar: unix.stackexchange.com/q/342392/117549; also: unix.stackexchange.com/q/352844/117549

    – Jeff Schaller
    Mar 29 at 18:31







  • 2





    You can also find it using locate, which should be significantly faster, but only works if the file already existed when updatedb was last run.

    – Simon Richter
    Mar 29 at 20:01














11












11








11


1






I need to find an image, say ABC.jpg, that I know will have been programmatically placed into a directory named ABC_MPSC. I've tried:



cd /
find . -name "ABC_MPSC/ABC.jpg"


But that doesn't return anything (I actually know where the particular one I'm searching for is, so I know it exists). Is there a find command that could allow me not have to search manually?










share|improve this question
















I need to find an image, say ABC.jpg, that I know will have been programmatically placed into a directory named ABC_MPSC. I've tried:



cd /
find . -name "ABC_MPSC/ABC.jpg"


But that doesn't return anything (I actually know where the particular one I'm searching for is, so I know it exists). Is there a find command that could allow me not have to search manually?







find






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 7 at 14:38









Rui F Ribeiro

42k1483142




42k1483142










asked Mar 29 at 18:27









PascLeRascPascLeRasc

1634




1634












  • Very similar: unix.stackexchange.com/q/342392/117549; also: unix.stackexchange.com/q/352844/117549

    – Jeff Schaller
    Mar 29 at 18:31







  • 2





    You can also find it using locate, which should be significantly faster, but only works if the file already existed when updatedb was last run.

    – Simon Richter
    Mar 29 at 20:01


















  • Very similar: unix.stackexchange.com/q/342392/117549; also: unix.stackexchange.com/q/352844/117549

    – Jeff Schaller
    Mar 29 at 18:31







  • 2





    You can also find it using locate, which should be significantly faster, but only works if the file already existed when updatedb was last run.

    – Simon Richter
    Mar 29 at 20:01

















Very similar: unix.stackexchange.com/q/342392/117549; also: unix.stackexchange.com/q/352844/117549

– Jeff Schaller
Mar 29 at 18:31






Very similar: unix.stackexchange.com/q/342392/117549; also: unix.stackexchange.com/q/352844/117549

– Jeff Schaller
Mar 29 at 18:31





2




2





You can also find it using locate, which should be significantly faster, but only works if the file already existed when updatedb was last run.

– Simon Richter
Mar 29 at 20:01






You can also find it using locate, which should be significantly faster, but only works if the file already existed when updatedb was last run.

– Simon Richter
Mar 29 at 20:01











2 Answers
2






active

oldest

votes


















17














There's a -path predicate that's useful here:



find . -path '*/ABC_MPSC/ABC.jpg'


The POSIX description for that predicate is:




The primary shall evaluate as true if the current pathname matches pattern using the pattern matching notation described in Pattern Matching Notation. The additional rules in Patterns Used for Filename Expansion do not apply as this is a matching operation, not an expansion.




The reason that your -name "ABC_MPSC/ABC.jpg" failed is because the -name predicate:




shall evaluate as true if the basename of the current pathname matches pattern




In other words, -name never sees the directory of the current filename, only the base filename itself (ABC.jpg, for example).






share|improve this answer
































    10














    Two ways (apart from using -path):




    1. Look for the directory, then detect the file:



      find / -type d -name 'ABC_MPSC' -exec test -f /ABC.jpg ; -print


      This relies on the find implementation to expand to the current pathname of the found directory, even though it's concatenated with /ABC.jpg (it's not required to do that). It could also be written as



      find / -type d -name 'ABC_MPSC' 
      -exec sh -c 'test -f "$1"/ABC.jpg' sh ; -print



    2. Look for the file, then check it's parent directory name:



      find / -type f -name 'ABC.jpg' -exec sh -c '
      case $(dirname "$1") in
      */ABC_MPSC) exit 0 ;;
      *) exit 1
      esac' sh ; -print


    Both of these alternatives would be slower than using -path in the way as Jeff shows. I'm leaving them here as examples none the less, as they could possibly be adapted for other things.






    share|improve this answer

























      Your Answer








      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "106"
      ;
      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: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      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%2funix.stackexchange.com%2fquestions%2f509490%2fis-it-possible-to-search-for-a-directory-file-combination%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









      17














      There's a -path predicate that's useful here:



      find . -path '*/ABC_MPSC/ABC.jpg'


      The POSIX description for that predicate is:




      The primary shall evaluate as true if the current pathname matches pattern using the pattern matching notation described in Pattern Matching Notation. The additional rules in Patterns Used for Filename Expansion do not apply as this is a matching operation, not an expansion.




      The reason that your -name "ABC_MPSC/ABC.jpg" failed is because the -name predicate:




      shall evaluate as true if the basename of the current pathname matches pattern




      In other words, -name never sees the directory of the current filename, only the base filename itself (ABC.jpg, for example).






      share|improve this answer





























        17














        There's a -path predicate that's useful here:



        find . -path '*/ABC_MPSC/ABC.jpg'


        The POSIX description for that predicate is:




        The primary shall evaluate as true if the current pathname matches pattern using the pattern matching notation described in Pattern Matching Notation. The additional rules in Patterns Used for Filename Expansion do not apply as this is a matching operation, not an expansion.




        The reason that your -name "ABC_MPSC/ABC.jpg" failed is because the -name predicate:




        shall evaluate as true if the basename of the current pathname matches pattern




        In other words, -name never sees the directory of the current filename, only the base filename itself (ABC.jpg, for example).






        share|improve this answer



























          17












          17








          17







          There's a -path predicate that's useful here:



          find . -path '*/ABC_MPSC/ABC.jpg'


          The POSIX description for that predicate is:




          The primary shall evaluate as true if the current pathname matches pattern using the pattern matching notation described in Pattern Matching Notation. The additional rules in Patterns Used for Filename Expansion do not apply as this is a matching operation, not an expansion.




          The reason that your -name "ABC_MPSC/ABC.jpg" failed is because the -name predicate:




          shall evaluate as true if the basename of the current pathname matches pattern




          In other words, -name never sees the directory of the current filename, only the base filename itself (ABC.jpg, for example).






          share|improve this answer















          There's a -path predicate that's useful here:



          find . -path '*/ABC_MPSC/ABC.jpg'


          The POSIX description for that predicate is:




          The primary shall evaluate as true if the current pathname matches pattern using the pattern matching notation described in Pattern Matching Notation. The additional rules in Patterns Used for Filename Expansion do not apply as this is a matching operation, not an expansion.




          The reason that your -name "ABC_MPSC/ABC.jpg" failed is because the -name predicate:




          shall evaluate as true if the basename of the current pathname matches pattern




          In other words, -name never sees the directory of the current filename, only the base filename itself (ABC.jpg, for example).







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Mar 29 at 18:40

























          answered Mar 29 at 18:30









          Jeff SchallerJeff Schaller

          45k1164147




          45k1164147























              10














              Two ways (apart from using -path):




              1. Look for the directory, then detect the file:



                find / -type d -name 'ABC_MPSC' -exec test -f /ABC.jpg ; -print


                This relies on the find implementation to expand to the current pathname of the found directory, even though it's concatenated with /ABC.jpg (it's not required to do that). It could also be written as



                find / -type d -name 'ABC_MPSC' 
                -exec sh -c 'test -f "$1"/ABC.jpg' sh ; -print



              2. Look for the file, then check it's parent directory name:



                find / -type f -name 'ABC.jpg' -exec sh -c '
                case $(dirname "$1") in
                */ABC_MPSC) exit 0 ;;
                *) exit 1
                esac' sh ; -print


              Both of these alternatives would be slower than using -path in the way as Jeff shows. I'm leaving them here as examples none the less, as they could possibly be adapted for other things.






              share|improve this answer





























                10














                Two ways (apart from using -path):




                1. Look for the directory, then detect the file:



                  find / -type d -name 'ABC_MPSC' -exec test -f /ABC.jpg ; -print


                  This relies on the find implementation to expand to the current pathname of the found directory, even though it's concatenated with /ABC.jpg (it's not required to do that). It could also be written as



                  find / -type d -name 'ABC_MPSC' 
                  -exec sh -c 'test -f "$1"/ABC.jpg' sh ; -print



                2. Look for the file, then check it's parent directory name:



                  find / -type f -name 'ABC.jpg' -exec sh -c '
                  case $(dirname "$1") in
                  */ABC_MPSC) exit 0 ;;
                  *) exit 1
                  esac' sh ; -print


                Both of these alternatives would be slower than using -path in the way as Jeff shows. I'm leaving them here as examples none the less, as they could possibly be adapted for other things.






                share|improve this answer



























                  10












                  10








                  10







                  Two ways (apart from using -path):




                  1. Look for the directory, then detect the file:



                    find / -type d -name 'ABC_MPSC' -exec test -f /ABC.jpg ; -print


                    This relies on the find implementation to expand to the current pathname of the found directory, even though it's concatenated with /ABC.jpg (it's not required to do that). It could also be written as



                    find / -type d -name 'ABC_MPSC' 
                    -exec sh -c 'test -f "$1"/ABC.jpg' sh ; -print



                  2. Look for the file, then check it's parent directory name:



                    find / -type f -name 'ABC.jpg' -exec sh -c '
                    case $(dirname "$1") in
                    */ABC_MPSC) exit 0 ;;
                    *) exit 1
                    esac' sh ; -print


                  Both of these alternatives would be slower than using -path in the way as Jeff shows. I'm leaving them here as examples none the less, as they could possibly be adapted for other things.






                  share|improve this answer















                  Two ways (apart from using -path):




                  1. Look for the directory, then detect the file:



                    find / -type d -name 'ABC_MPSC' -exec test -f /ABC.jpg ; -print


                    This relies on the find implementation to expand to the current pathname of the found directory, even though it's concatenated with /ABC.jpg (it's not required to do that). It could also be written as



                    find / -type d -name 'ABC_MPSC' 
                    -exec sh -c 'test -f "$1"/ABC.jpg' sh ; -print



                  2. Look for the file, then check it's parent directory name:



                    find / -type f -name 'ABC.jpg' -exec sh -c '
                    case $(dirname "$1") in
                    */ABC_MPSC) exit 0 ;;
                    *) exit 1
                    esac' sh ; -print


                  Both of these alternatives would be slower than using -path in the way as Jeff shows. I'm leaving them here as examples none the less, as they could possibly be adapted for other things.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Mar 29 at 23:34

























                  answered Mar 29 at 18:37









                  KusalanandaKusalananda

                  141k17263439




                  141k17263439



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Unix & Linux Stack Exchange!


                      • 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%2funix.stackexchange.com%2fquestions%2f509490%2fis-it-possible-to-search-for-a-directory-file-combination%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

                      Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

                      Luettelo Yhdysvaltain laivaston lentotukialuksista Lähteet | Navigointivalikko

                      Gary (muusikko) Sisällysluettelo Historia | Rockin' High | Lähteet | Aiheesta muualla | NavigointivalikkoInfobox OKTuomas "Gary" Keskinen Ancaran kitaristiksiProjekti Rockin' High