find용 래퍼를 작성하는 방법은 무엇입니까?

find용 래퍼를 작성하는 방법은 무엇입니까?

나는 파일 세트에 대해 텍스트 처리를 하고 있습니다. 즉, 해당 파일에 대해 find를 실행하고 일부 디렉토리를 무시(및 정리)합니다.

find . -name '*.php' -not \( -path ./.git -prune -o -path ./.idea -prune \) -exec sed -E -i 's/function_call/refactored_function/g' {} '+'

문제는 명령의 첫 번째 부분( -name예: 스위치 등)(이전)과 exec가 변경될 수 있고 해당 인수가 매우 엄격하다는 것입니다. 그러면 다음과 같이 작성할 수 있는 래퍼를 어떻게 작성해야 합니까?-iname-type-notfind

otherfind . -name '*.php' -exec sed -E -i 's/function_call/refactored_function/g' {} '+'

그게 맞을까요 -not \( -path ./.git -prune -o -path ./.idea -prune \)?

답변1

find신경 쓰지 않는 파일을 무시하거나 포장하는 방법을 기억하는 대신 다음을 사용 합니다 git grep.

git grep -z -l function_call -- \*.php |
xargs -0 sed -E -i 's/function_call/refactored_function/g'

function_call.php그러면 무시된 파일(정의된 대로 .gitignore)과 디렉터리를 무시하고 확장명이 있는 모든 파일을 찾아 처리를 위해 .git전달 합니다 xargs. -z옵션은 -0널 문자를 사용하여 파일 이름을 구분합니다.

관련 정보