2017-05-19 56 views
0

我通常鍵入:(例如助記符= 「所有」)Linux或UNIX發現:快捷鍵匹配的部分名稱

find . -name "*pattern*" 

我要鍵入:

afind . -name "pattern" 

find . -aname "pattern" 

我只是想可能有一個快捷方式,如 find . -iname "blah"rgrep instead of grep -r

即使像grep的例子,它不僅節省了幾個字符,它們被移動的字符不容易輸入,它是一種常用的搜索,大概。

+0

所有3個答案都非常感謝!我選擇了(當前)最受歡迎的選票,因爲它簡短而又甜美,並以最少的麻煩直接解決了我的問題。第二名的人很長,但技術上也很有趣,而且信息量很大。很難不挑選那個。 – Starman

回答

3

你必須推出自己的。例如: -

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

$ afind . partial 
./dir/apartialmatch 

您可以定義添加到您的.profile或任何以便它始終可用。

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並把星號圍繞其論點。

+0

添加選項的有趣方式。 :-) – ghoti

1

如果這是你做了很多事情,locate會更快。它基於Berkeley Fast Find,並且包含在GNU「findutils」包中。請注意,它從數據庫獲取其數據,因此它的最新版本號爲updatedb,它也位於「findutils」包中。