Linux 如何使用find命令查找文件名的目录并删除重复项?

Linux 如何使用find命令查找文件名的目录并删除重复项?,linux,unix,find,Linux,Unix,Find,我正在使用find/-name“*.dbf”查找所有.dbf文件的目录。 它给了我目录和文件名 输出应仅为没有重复项的目录。我不需要查看文件名。您可以通过管道将结果传递到dirname,然后删除重复项,如下所示: find / -name \*.dbf -print0 | xargs -0 -n1 dirname | sort | uniq 另一种解决方案:find/-name“*.dbf”-exec dirname{};2> /dev/null | sort-u我可以用两种方式理解您的问题:

我正在使用
find/-name“*.dbf”
查找所有.dbf文件的目录。 它给了我目录和文件名


输出应仅为没有重复项的目录。我不需要查看文件名。

您可以通过管道将结果传递到
dirname
,然后删除重复项,如下所示:

find / -name \*.dbf -print0 | xargs -0 -n1 dirname | sort | uniq

另一种解决方案:
find/-name“*.dbf”-exec dirname{};2> /dev/null | sort-u

我可以用两种方式理解您的问题:

  • 要仅查找与
    匹配且无重复项的目录,可以使用管道输送到
    排序| uniq
    中的
    -type
    选项:

    find/-name'-类型d | sort | uniq

  • 要查找所有文件,但只返回包含匹配文件的目录,且不重复,请执行以下操作:

    find/-name'| perl-pe的/(.*\/).$/$1/| sort | uniq


  • 谢谢-我添加了2>/dev/null以删除权限警告
    find/-name\*.dbf-print02>/dev/null | xargs-0-n1 dirname | sort | uniq