Directory

如何列出包括文本在內的所有目錄路徑?

  • April 30, 2019

我需要列出所有目錄路徑,包括作為其子目錄一部分的文本。例如,文本是**“tpcc”** ,我有兩個路徑,包括tpcc,如下所示:

/home/arghy/sampledir1/**tpcc**-uva/subdir1/subdir2
/home/arghy/sampledir2/**tpcc**-postgre/subdir1/subdir2

我想使用命令列出這些路徑並將“tpcc”作為上述文本。對此有何命令?

要從目前目錄向下查找包含特定字元串的所有目錄路徑名tpcc

find . -type d -path '*tpcc*'

謂詞將-path匹配模式與find遇到的路徑名,如果匹配模式,將列印目前路徑名。

如果您希望模式在目前路徑名的末尾匹配,請改用*tpcc*/*作為模式。匹配/之後的某處tpcc將導致在名稱包含的任何目錄find嚴格查找目錄。tpcc

-type d搜尋限制為僅目錄。

你想把它包裝成一個簡單易用的shell函式嗎:

pathfind () {
   case $# in
       1)  # only a string was given
           searchpath=.
           searchstring=$1
           ;;
       2)  # search path and string was given
           searchpath=$1
           searchstring=$2
           ;;
       *)  # anything else is an error
           echo 'Expected one or two arguments' >&2
           return 1
   esac

   find "$searchpath" -type d -path "*$searchstring*"
}

您可以將其用作

pathfind tpcc

或作為

pathfind /some/path tpcc

或者

pathfind /some/path 'tpcc*/'

引用自:https://unix.stackexchange.com/questions/516357