txt, html, jpg 및 png 파일이 포함된 폴더가 있습니다.
이제 모든 텍스트 기반 파일(txt 및 html)을 확인하고 검색 및 바꾸기를 시작하고 싶습니다.
나는 다음을 수행했고 잘 작동했습니다.
find ./ -iregex '.*\.\(txt\|html\)$' -exec sed -i 's/search/replace/g' {} +
하지만 이제 교체가 수행된 파일도 기록하고 싶습니다.
내 폴더에 5개의 txt 및/또는 html 파일이 있다고 가정해 보겠습니다. 하지만 그중 두 개만 문자열이 search
포함되어 있기 때문에 일부 대체품을 갖게 됩니다.
따라서 명령 뒤에는 myLog.log
두 파일(전체 경로)이 모두 인쇄되는 로그 파일(예: )이 필요합니다.
그런데 그러한 명령을 어떻게 구현할 수 있습니까?
이것sed명령에는 그러한 매개변수/옵션이 없습니다.
답변1
search
먼저 패턴을 검색한 후 검색하고 로그를 작성 해야 합니다 sed
.
시도해 보세요(가독성을 위해 줄바꿈)
find ./ -iregex '.*\.\(txt\|html\)$' \
-exec grep -q search {} \; \
-print \
-exec sed -i 's/search/replace/g' {} + \
> my-sed.log
어디
search
in은-exec grep -q search {} \;
검색 패턴입니다.+
여러 파일을 일치시킬 사람 을 사용할 수 없습니다 .-print
기록할 수 있도록 일치하는 파일을 인쇄합니다.