{"id":476859,"date":"2022-07-23T01:00:35","date_gmt":"2022-07-22T22:00:35","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-recursively-search-directory-names-in-linux\/"},"modified":"2022-07-23T01:00:35","modified_gmt":"2022-07-22T22:00:35","slug":"how-to-recursively-search-directory-names-in-linux","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-recursively-search-directory-names-in-linux\/","title":{"rendered":"#How to Recursively Search Directory Names in Linux"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6aee3a7e9bf6d\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6aee3a7e9bf6d\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-recursively-search-directory-names-in-linux\/#%E2%80%9CHow_to_Recursively_Search_Directory_Names_in_Linux%E2%80%9D\" >&#8220;How to Recursively Search Directory Names in Linux&#8221;<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-recursively-search-directory-names-in-linux\/#Searching_Directories\" >Searching Directories<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-recursively-search-directory-names-in-linux\/#Searching_With_Regex\" >Searching With Regex<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-recursively-search-directory-names-in-linux\/#Using_grep_With_find\" >Using grep With find<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E2%80%9CHow_to_Recursively_Search_Directory_Names_in_Linux%E2%80%9D\"><\/span>&#8220;How to Recursively Search Directory Names in Linux&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<div>\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage alignnone size-full wp-image-4038\" data-pagespeed-no-defer=\"\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2017\/07\/add8ac45.png?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"Bash Shell\" width=\"1400\" height=\"600\"\/><\/p>\n<p>Everything in Linux is stored in directories, and when writing bash <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">script<\/a>s, it\u2019s often useful to search for directories by name. Luckily, you can use the <code>find<\/code>\u00a0command to recursively search directory names and display matches.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Searching_Directories\"><\/span>Searching Directories<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The <code>find<\/code>\u00a0command is used to search through directories in Linux. By default, it\u2019s fully recursive, so it will search through all sub-directories to find matches.<\/p>\n<p>If you use the <code>-type d<\/code>\u00a0flag, <code>find<\/code>\u00a0will operate in \u201cdirectory mode,\u201d and only search for directories, not matching any files. You can use it alongside <code>-name<\/code>\u00a0to search for directories by name:<\/p>\n<pre>find . -type d -name \"search\"<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-802132\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/04\/Screenshot_709.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"484\" height=\"310\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>This command starts in the current directory but can also search in other directories like <code>~<\/code>.<\/p>\n<p>The problem with using <code>-name<\/code>\u00a0is it will only match direct names, meaning it will fail unless it matches the entire directory name. You can use wildcards to solve this though, and putting a wildcard before and after the search string will match the substring anywhere in the directory name.\u00a0If you\u2019re including filenames too, you can use wildcards to match files ending in a particular extension<\/p>\n<pre>find . -type d -name \"*search*\"<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-802134\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/04\/Screenshot_713.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"523\" height=\"259\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>However, this will only match the directory\u2019s name, and will still ignore the parent directory. If you\u2019d like to match using the entire file path, you\u2019ll need to use the Regex option covered below.<\/p>\n<p><code>find<\/code> will print out a list of every directory that matches, but you\u2019ll want to be careful to make sure you\u2019re consistent in using either absolute or relative paths, because it will affect the final response. If you use a relative path, like the period for \u201ccurrent directory,\u201d the responses will be relative. But if you specify the path directly, even if it\u2019s the current directory, the path will be absolute, starting at root.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-802133\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/04\/Screenshot_710.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"389\" height=\"141\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p><code>find<\/code>\u00a0also does more than just text searching\u2014it can be used to match files based on timestamps, file sizes, and other Linux identifiers. It can also be used with <code>-exec<\/code>\u00a0to run commands on each file or directory.<\/p>\n<p><strong>RELATED:<\/strong> <strong><em>How to Use the find Command in Linux<\/em><\/strong><\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Searching_With_Regex\"><\/span>Searching With Regex<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>You can also use more advanced filtering with <code>find<\/code>, using it with regular expressions (Regex) to find matches for complex search queries.<\/p>\n<p>One major benefit of using Regex is that it will match the entire directory, including the base directories leading up to.<\/p>\n<p>You can use Regex with <code>-regex<\/code>\u00a0in place of <code>-name<\/code>. It also helps to turn on <code>sed<\/code>-compatible Regex using <code>-regextype sed<\/code>.<\/p>\n<p>find . -type d -regextype sed -regex \u201c.*one\\\/.*\u201d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-802137\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/04\/Screenshot_714.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"562\" height=\"280\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>In this example, the regex starts with <code>.*one<\/code>\u00a0to match all directories ending in \u201cone.\u201d The period and wildcard will match any substring leading up to this. Then the forward slash is escaped with <code>\\\/<\/code>\u00a0to match the end of the directory, and then another wildcard to match any directory name.<\/p>\n<p>Overall, this will match any directory whose parent ends with \u201cone,\u201d anywhere it is, even in subdirectories. Regex is powerful, and you\u2019ll want to be careful that yours matches exactly what you want it to do\u2014no more, no less.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Using_grep_With_find\"><\/span>Using grep With find<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Since <code>find<\/code>\u00a0can also output a raw list of directories, it can be piped to other commands for processing. For example, <code>grep<\/code>\u00a0is used as a text search utility, and is quick to use on the command line for simple search and highlighting.<\/p>\n<pre>find . -type d | grep foo<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-802138\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2022\/04\/Screenshot_715.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"503\" height=\"251\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p><code>grep<\/code>\u00a0is also a fully-fledged search utility on its own and can be used with tools like regular expressions to enhance the searching. You can read our guide to using it to learn more.<\/p>\n<p><strong>RELATED:<\/strong> <strong><em>How to Use the grep Command on Linux<\/em><\/strong><\/p>\n<\/div>\n<p><script>\n setTimeout(function(){\n  !function(f,b,e,v,n,t,s)\n  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n  n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n  n.queue=[];t=b.createElement(e);t.async=!0;\n  t.src=v;s=b.getElementsByTagName(e)[0];\n  s.parentNode.insertBefore(t,s) } (window, document,'script',\n  'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\n   fbq('init', '335401813750447');\n   fbq('track', 'PageView');\n  },3000);\n<\/script><\/p>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.howtogeek.com\/devops\/how-to-recursively-search-directory-names-in-linux\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;How to Recursively Search Directory Names in Linux&#8221; Everything in Linux is stored in directories, and when writing bash scripts, it\u2019s often useful to search for directories by name. Luckily, you can use the find\u00a0command to recursively search directory names and display matches. Searching Directories The find\u00a0command is used to search through directories in Linux&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":476860,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2017\/07\/add8ac45.png?height=200p&trim=2,2,2,2","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-476859","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/476859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=476859"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/476859\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/476860"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=476859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=476859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=476859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}