다음 명령을 사용하고 있습니다
find . -type f -exec sed -i 's/_backpack.html/_backpack_cal.html/g' {} +
프로젝트의 모든 "_backpack.html" 문자열을 대체하고 싶은데 _backpack_cal.html
이런 일이 발생합니다.
그러나 문제는 내 디렉토리 .git
의 파일 도 편집하여 Git이 손상된다는 것입니다. 다른 모든 하위 디렉터리를 처리하는 동안 find
내 디렉터리가 건드리지 않도록 하려면 어떻게 해야 합니까?.git
답변1
당신이 사용할 수있는:
find . -name .git -prune -o -type f -exec sed -i 's/_backpack.html/_backpack_cal.html/g' {} +
제가 추가한 부분은 -name .git -prune
기본적으로 "디렉토리 이름이 이면 .git
해당 디렉토리를 처리하지 않습니다." 라는 의미입니다.
또한 첫 번째 명령문이 false인 경우(즉, 처리 중인 파일 이름이 디렉토리인 경우 ) 에만 명령문을 실행한다는 추가 사항 -o
(의미 )에 유의하세요.or
.git
물론 실제로 명령을 실행하기 전에 이를 테스트해야 합니다. 예를 들어 -exec ...
일부를 .-print
답변2
제외하려는 경우 .git
:
find . ! -path '.git/*' -type f
모든 숨겨진 파일 및 디렉터리를 제외하려면:
find . ! -path '*/.*' -type f