Linux or unix find: 匹配部分名称的快捷方式
Linux or unix find: shortcut for matching partial name
我通常输入的内容:
find . -name "*pattern*"
我要输入的内容(例如.mnemonic = "all"):
afind . -name "pattern"
或
find . -aname "pattern"
我只是在想可能有一条捷径就像
find . -iname "blah"
要么
rgrep instead of grep -r
尽管像 grep 示例一样,它只保存了几个字符,但它们是移位字符,不太容易输入,而且它可能是常用的搜索。
你必须自己动手。例如:
$ afind () { find "" -name "**"; }
$ afind . partial
./dir/apartialmatch
您可以将定义添加到您的 .profile 或其他任何内容,以便它始终可用。
您正在寻找的是一种用于查找的包装函数。
此脚本应该可以满足您的需求,并保留 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
并在其参数周围加上星号。
如果这是您经常做的事情,locate
会更快。它基于 Berkeley Fast Find 并包含在 GNU "findutils" 包中。请注意,它从数据库中获取数据,因此它仅与 updatedb
的最后一个 运行 一样最新,它也在 "findutils" 包中。
我通常输入的内容:
find . -name "*pattern*"
我要输入的内容(例如.mnemonic = "all"):
afind . -name "pattern"
或
find . -aname "pattern"
我只是在想可能有一条捷径就像
find . -iname "blah"
要么
rgrep instead of grep -r
尽管像 grep 示例一样,它只保存了几个字符,但它们是移位字符,不太容易输入,而且它可能是常用的搜索。
你必须自己动手。例如:
$ afind () { find "" -name "**"; }
$ afind . partial
./dir/apartialmatch
您可以将定义添加到您的 .profile 或其他任何内容,以便它始终可用。
您正在寻找的是一种用于查找的包装函数。
此脚本应该可以满足您的需求,并保留 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
并在其参数周围加上星号。
如果这是您经常做的事情,locate
会更快。它基于 Berkeley Fast Find 并包含在 GNU "findutils" 包中。请注意,它从数据库中获取数据,因此它仅与 updatedb
的最后一个 运行 一样最新,它也在 "findutils" 包中。