2017-05-19 2 views
0

名前の一部をマッチングするためのショートカット:LinuxやUnixの検索:私は通常、入力する文字を

find . -name "*pattern*" 

私が入力したい(。例えばニーモニック= "すべて"):

afind . -name "pattern" 

または

find . -aname "pattern" 

私はちょうど のスタイルのようにショートカットがある可能性が考えていたfind . -iname "blah" または rgrep instead of grep -r

、grepの例のように、それは文字だけのカップルを保存していても、それらがシフトされている文字はない入力するように簡単に、そしてそれはおそらく、一般的に使用される検索です。

+0

3つの回答が非常に高く評価されました。短くて甘くて面倒なことを最小限に抑えて直接問題を解決したので、私は(現在)トップ投票を選んだ。 2位のものは長く、技術的に面白くて非常に有益でした。それも同様に選ぶことは困難でした。 – Starman

答えて

3

自分でロールバックする必要があります。例:

定義を.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[@]}" 

それはちょうど-name-anameオプションのいずれかのインスタンスを置き換え、その引数の周りにアスタリスクを置きます。

+0

興味深いオプションを追加する方法。 :-) – ghoti

1

これはあなたがたくさん行うものであれば、locateはもっと速くなります。これはBerkeley Fast Findに基づいており、GNUの "findutils"パッケージに含まれています。データベースからデータを取得することに注意してください。最後の実行はupdatedbであり、これも "findutils"パッケージに含まれています。

関連する問題