【问题标题】:How to find folder only containing exact text如何查找仅包含确切文本的文件夹
【发布时间】:2017-09-28 02:58:01
【问题描述】:

我使用的是 CentOS 6.8,我试图将一个变量(我们称之为 fPath)设置为文件的文件路径(我们称之为文件夹 Foo)。重点是我不知道用户究竟在哪里安装了文件夹 Foo。

问题是我的查找命令将返回包含字符串 Foo 的所有文件夹(如在 Foo 文件夹内,有 Foo_logs、Foo_apps、FooMore 等)。我希望我的 find 命令仅查找/返回 Foo 文件夹路径。

我尝试过搜索,最接近的尝试是使用以下命令:

find -regex ./Foo

但是,如果我已经在包含 Foo 文件夹的目录中,这只会返回 Foo 文件夹路径。我想在任何目录中并应用 find 命令只返回 Foo 文件夹路径。

我尝试过的其他命令是:

locate Foo

find -type d -name Foo

find ./Foo

locate /Foo

locate ./Foo

find Foo | -wholename '*/Foo/*'

find ./Foo | -wholename '*/Foo/*'

find .*/Foo | -wholename '*/Foo/*'

编辑:格式化

【问题讨论】:

    标签: linux command-line centos6


    【解决方案1】:

    如您所料,find 将完美地完成这项工作:

    find / -type d -name Foo

    • / 是它开始搜索的地方。
    • -type d 仅表示目录
    • -name Foo 表示完全命名为 Foo 的文件。

    不要在这里使用-wholename,因为它会期望整个路径匹配,而不仅仅是(子)目录之一。

    【讨论】:

    • 谢谢,但这仍然返回包含字符串 Foo 的所有目录(如 Foo_logs)。我试图获得文件 Foo 的单个返回,文件名等于 Foo 并且没有其他内容(没有“_”或“日志”等)。
    • 如果有多个名为 Foo 的目录,您将在输出中得到它们。除非您给它更多条件,否则您的外壳无法“猜测”您要查找的那个。至于 Foo_log,它不会显示在结果中,除非它位于“Foo”目录下(这似乎是您首先要寻找的)。
    • 哦;我懂了。为澄清起见,应该只有一个名为(仅)Foo 的目录/文件夹;但是有没有办法在 find 命令中说忽略目录中包含字符串“Foo”的任何其他内容。就像我之前说的,我不想要 Foo 中的 Foo_logs 目录;我只想要输出中的 Foo 文件路径。那可能吗?所以基本上我有这样的东西: Foo / \ Foo_logs FooMore 我想要返回的只是 Foo 父级的文件路径。其他的文件名中不仅仅是“Foo”。
    猜你喜欢
    • 1970-01-01
    • 2017-07-03
    • 2014-04-03
    • 2013-12-25
    • 2011-11-04
    • 2018-04-21
    • 2016-11-15
    • 2015-10-07
    • 2011-09-03
    相关资源
    最近更新 更多