Directory
如何列出包括文本在內的所有目錄路徑?
我需要列出所有目錄路徑,包括作為其子目錄一部分的文本。例如,文本是**“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*/'