-regex
私はシェルパターン構文よりも正規表現を好みます-name
。私もposix-egrep
型を使いたいので、次のようなことをしたいと思います。
alias find="find -regextype posix-egrep"
ただし、パスが式の前にある必要があるため、これはエラーです。ただし、-regextype
式から最初に来る必要があります(または-regex
orを使用する前に-iregex
)。
find
私は単に正常に動作し、orオプションをposix-regex
使用することを決定するたびに使用できるようにエイリアスを指定するか、シェル機能を持ちたいと思います。-regex
-iregex
どうすればいいですか?
答え1
パラメータは場所によって異なるため、find
関数はより良い解決策になります。
find(){
command find "$1" -regextype posix-egrep "${@:2}"
}
find
元のコマンドを「上書き」したいので、新しい関数が自分自身を呼び出す無限ループを生成しないようにフルパスを使用する必要があります。
エイリアスの代わりに関数を使用すると、位置引数変数($1-$n
)を使用できます。最後に他のものを追加したい場合があるので、配列スライスを使用して最初の引数(パス)を除くすべての項目を追加してfind
コマンドを追加します。${@:2}
答え2
次のことができます。
efind() (
found=false
for arg do
if [ "$arg" = -regex ] && ! "$found"; then
set -- "$@" -regextype posix-egrep
found=true
fi
set -- "$@" "$arg"
shift
done
exec find "$@"
)
-regex-type posix-egrep
最初に発生する前に挿入してください-regex
。