Linux 或 unix 查找:匹配部分名称的快捷方式



我通常输入的内容:

find . -name "*pattern*"

我想输入的内容(例如,助记符="全部"(:

afind . -name "pattern"

find . -aname "pattern"

我只是在想,可以有一个捷径,就像 find . -iname "blah"rgrep instead of grep -r

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

你必须自己动手。 例如:

$ afind () { find "$1" -name "*$2*"; }
$ afind . partial  
./dir/apartialmatch

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

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

此脚本应执行您要查找的操作,并维护查找的所有其他功能。

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[@]}"

它只是用 -name 替换 -aname 选项的任何实例,并在其参数两边加上星号。

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

最新更新