디렉토리와 하위 디렉토리에 있는 모든 텍스트를 바꾸는 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에 특별한 문자가 포함된 문자열이나 기타 문자 에는 작동하지 않습니다 .

관련 정보