파일을 찾은 다음 해당 파일의 텍스트를 편집하려고 합니다. 이것이 제가 지금까지 갖고 있는 것이지만 불행히도 저는 그것에 대해 별로 익숙하지 않습니다. 도와주세요?
grep -rl "wrongtext" ~/Library/Calendars
/Users/foo/Library/Calendars/foo.caldav/foo.calendar/Info.plist
/Users/foo/Library/Calendars/foo.calendar.caldav/foo.calendar.calendar/Info.plist
/Users/foo/Library/Calendars/foo.calendar.caldav/Info.plist
/Users/foo/Library/Calendars/foo.calendar.caldav/Info.plist
/Users/foo/Library/Calendars/CalendarCache
그 다음에...
sed -i '' 's/wrongtext/righttext/g’
어떤 아이디어가 있나요?
답변1
다음을 수행해야 합니다.
grep -rlZ "wrongtext" ~/Library/Calendars | xargs -0 sed -i '' 's/wrongtext/righttext/g'
각 파일 이름 뒤에 개행 문자 대신 0바이트를 추가 -Z
하는 매개변수를 추가했습니다 . grep
따라서 이 명령은 이상한 파일 이름에도 작동합니다. xargs
그런 다음 0바이트로 구분된 입력을 읽고 명령을 -0
호출합니다 .sed
답변2
알아냈어요. 그것은 좋아하지 않는다-영형
grep -rlZ "wrongtext" ~/Library/Calendars | xargs sed -i '' 's/wrongtext/righttext/g'