如何列出包含文本的所有目录路径?

如何列出包含文本的所有目录路径?

我需要列出所有目录路径,包括作为子目录一部分的文本。例如,文本是“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

检查此链接:网址

下一篇:巴巴德·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔·巴扎尔和 پفف 巴巴

唷唷唷

相关内容