0

我通常输入的内容:

find . -name "*pattern*"

我要输入的内容(例如。助记符 = “all”):

afind . -name "pattern"

或者

find . -aname "pattern"

我只是在想可能有一条捷径, find . -iname "blah" 比如 rgrep instead of grep -r

尽管像 grep 示例一样,它只保存了几个字符,但它们是移位字符,不容易输入,而且它可能是一种常用的搜索。

4

3 回答 3

3

你必须自己动手。例如:

$ afind () { find "$1" -name "*$2*"; }

$ afind . partial  
./dir/apartialmatch

您可以将定义添加到您的 .profile 或其他任何内容中,以便它始终可用。

于 2017-05-19T18:13:28.977 回答
2

您正在寻找的是一种用于查找的包装函数。

这个脚本应该做你正在寻找的东西,并维护 find 的所有其他功能。

declare -A params
wild_next=false
for i in $(seq 1 $#); do
    if [[ ${!i} == "-aname" ]]; then
        params[$i]='-name'
        wild_next=true
    else
        if $wild_next; then
            params[$i]="'*${!i}*'"
        else
            params[$i]=${!i}
        fi
        wild_next=false
    fi
done

eval "find ${params[@]}"

-aname它只是将选项的任何实例替换为-name并在其参数周围加上星号。

于 2017-05-19T18:20:46.463 回答
1

如果这是你经常做的事情,locate会更快。它基于 Berkeley Fast Find 并包含在 GNU“findutils”包中。请注意,它从数据库中获取数据,因此它仅与上次运行一样最新updatedb,它也在“findutils”包中。

于 2017-05-21T14:27:04.820 回答