Linux find 및 sed 명령을 사용하여 찾은 로그 파일

Linux find 및 sed 명령을 사용하여 찾은 로그 파일

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

어디

  • searchin은 -exec grep -q search {} \;검색 패턴입니다. +여러 파일을 일치시킬 사람 을 사용할 수 없습니다 .
  • -print기록할 수 있도록 일치하는 파일을 인쇄합니다.

관련 정보