디렉토리 및 하위 디렉토리의 모든 텍스트를 바꾸는 bash 기능

디렉토리 및 하위 디렉토리의 모든 텍스트를 바꾸는 bash 기능

나는 (Google에서) 내 디렉터리와 하위 디렉터리에 있는 모든 파일을 대체하는 완벽하게 작동하는 다음 줄을 발견했습니다.

grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g'

좋은 결과.

하지만 이제 내 파일 bash_aliases의 함수에서 다음과 같이 사용하려고 합니다.

freplace() {
    grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g';
}

그런데 전화를 해보니

freplace previoustext newtext

내 터미널에서는 아무 일도 일어나지 않습니다. 텍스트가 대체되지 않습니다.

왜 작동하지 않는지 아시나요?

답변1

매개변수를 함수에 전달하려면 위치 매개변수를 사용하여 매개변수를 가져와야 합니다.

freplace() {
    grep -lr "$1" | xargs sed -i "s/$1/$2/g"
}

/sed 또는 기타 특수 문자가 포함된 문자열 에서는 작동하지 않습니다 .

관련 정보