gpt4 book ai didi

find - 最佳 GNU 查找替代品

转载 作者:行者123 更新时间:2023-12-05 00:37:07 25 4
gpt4 key购买 nike

我正在寻找更好的发现。原因是 find 用户界面对我来说是不直观的(特别是修剪/-print 风格)并且由于对参数排序的严格要求而难以包装在函数中。 locate/updatedb 不够灵活,无法使用。有没有人愿意分享他们的示例查找包装器或查找替代方案(请仅使用命令行)?

这是我发现不直观用法的示例:

find dir_a dir_b \( -path dir_a/.git -o -path dir_b/out \) -prune -o \( -type f -o -type l \)

在选项之前指定目录对我来说很奇怪,并且很容易忘记修剪的语法。 (有些程序使用 --exclude 选项代替。)我认识到这是一个挑剔的点。

这是我在不丢失太多功能的情况下指定一些默认值的最佳尝试:
f()
{
# The trouble is that -regextype must appear after path but before expression.
# HACK: "-D debugopts" unsupported and -[HLPO] options assumed to before dirs.
local a=()
while [[ -n "$1" ]] && ( [[ ! "${1:0:1}" =~ [-!(),] ]] || [[ "${1:0:2}" =~ -[HLPO] ]] )
do
a+=("$1")

# Eliminate arg from @.
shift
done

find -O3 "${a[@]}" -nowarn -regextype egrep "$@"
}

需要对程序中的所有选项有一个完美的理解才能用一些默认值来包装它而不丢失功能/与普通查找的兼容性似乎很愚蠢。

我猜我不会像 GNU 发现的那样标准,但可能有更好的东西,尽管鲜为人知。

更新(2013-11-26):
  • 在 Itay 的建议下,我使用了 ack大约一年。它至少适用于我 95% 的搜索。
  • 我最近发现 Ag ,这是 ack 的快速版本。过去几周一直运行良好。

  • 更新(2014-11-23):

    我强烈推荐 Ag .它工作得很好。仍然有很多时候 Find 是必要的,为此我继续寻找一个不错的替代品。尽管毫无疑问是有用的,但在我看来 Find 的界面非常过时并且不必要地困难。

    更新(2017-08-04):

    我现在最强烈推荐 ripgrep作为不可或缺的银替代品。这是一个非常新的工具,但它对 .gitignore 文件的支持大大超过了 Ag,并且在所有其他方面都相当或更好。我继续寻找 Find 替代品。

    最佳答案

    你应该试试 Ack ,这是 find 的替代品和 grep ,针对使用源代码树进行了优化。

    关于find - 最佳 GNU 查找替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747039/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com