-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
.