![ファイルの検索、ファイルのテキストの編集 [閉じる]](https://linux33.com/image/69686/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%A4%9C%E7%B4%A2%E3%80%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E7%B7%A8%E9%9B%86%20%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
ファイルを見つけて、そのファイルのテキストを編集しようとします。これが私が今まで持っているものですが、残念ながら私はそれについてあまり慣れていません。助けてください?
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'
各ファイル名の後に改行文字の代わりにゼロバイトを追加する-Z
パラメータを追加しました。grep
したがって、このコマンドは奇妙なファイル名でも機能します。xargs
その後、ゼロバイトで区切られた入力を読み取り、コマンドを-0
呼び出します。sed
答え2
調べました。それは好きではない- モールド
grep -rlZ "wrongtext" ~/Library/Calendars | xargs sed -i '' 's/wrongtext/righttext/g'