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

时间:2017-05-19 16:02:10

标签: linux unix find command name-matching

我通常输入的内容:

find . -name "*pattern*"

我要输入的内容(例如.mnemonic =“all”):

afind . -name "pattern"

find . -aname "pattern"

我只是觉得可能有一种类似于风格的捷径 find . -iname "blah" 要么 rgrep instead of grep -r

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

3 个答案:

答案 0 :(得分:3)

你必须自己动手。 e.g:

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

$ afind . partial  
./dir/apartialmatch

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

答案 1 :(得分:2)

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

此脚本应该执行您正在寻找的内容,并维护查找的所有其他功能。

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选项的任何实例,并在其参数周围加上星号。

答案 2 :(得分:1)

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