我需要列出所有目录路径,包括作为子目录一部分的文本。例如,文本是“tpcc” 我有两条路,包括TPCC如下:
/home/arghy/sampledir1/**tpcc**-uva/subdir1/subdir2
/home/arghy/sampledir2/**tpcc**-postgre/subdir1/subdir2
我想使用命令列出这些路径,并给出“tpcc”作为上述文本。这个命令是什么?
答案1
要查找从当前目录向下包含特定字符串的所有目录路径名tpcc
:
find . -type d -path '*tpcc*'
谓词-path
会将模式与find
遇到的路径名进行匹配,如果与模式匹配,则将打印当前路径名。
如果你不希望模式在当前路径名的末尾匹配,请*tpcc*/*
改为使用 as 模式。/
在后面匹配 atpcc
会导致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*/'
答案2
您所描述的任务将得到满足
find . -type d | grep tpcc
但这还将列出“分支”目录,而不仅仅是“叶”目录:
/home/arghy/sampledir1/tpcc-uva
/home/arghy/sampledir1/tpcc-uva/subdir1
/home/arghy/sampledir1/tpcc-uva/subdir1/subdir2
这样可以吗?或者您想跳过其中包含更多子目录的目录吗?
答案3
sudo find DIRECORY -type f -exec grep -Iq . {} \; -exec dirname {} \; | sort|uniq
检查此链接:网址
下一篇:巴巴德·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔和 پفف 巴巴
唷唷唷