[解決済み] MacとLinuxでのテキストファイルの再帰的検索と置換
質問
Linuxシェルで、次のコマンドを実行すると、「this」のすべてのインスタンスを再帰的に検索して「that」に置き換えることができる(目の前にLinuxシェルはないが、これでできるはずだ)。
find . -name "*.txt" -print | xargs sed -i 's/this/that/g'
OSXでの同様のコマンドはどのようなものになるのでしょうか?
解決方法は?
OS XはBSDとGNUのツールを混ぜて使っているので、常にドキュメントをチェックするのが一番です(ただし、私が持っていたのは
less
はOS Xのmanpageにさえ準拠していませんでした)。
の後に引数を取ります。
-i
をバックアップのための拡張子として使用します。空の文字列を指定する (
-i ''
) は、バックアップを行わない場合です。
以下のようにすればよい。
find . -type f -name '*.txt' -exec sed -i '' s/this/that/g {} +
は
-type f
は単なるグッドプラクティスです。sedはディレクトリを与えたりすると文句を言います。
-exec
よりも優先されます。
xargs
をわざわざ使う必要はありません。
-print0
などがあります。
は、その
{} +
を意味します。
find
は、結果ごとにコマンドを再実行するのではなく、呼び出されたコマンドの1つのインスタンスにすべての結果を引数として追加します。(一つの例外は、OSが許容するコマンドライン引数の最大数に違反している場合です; その場合は
find
は複数のインスタンスを実行します)。
もし、quot;invalid byte sequence,"のようなエラーが発生した場合、標準ロケールを強制するために
LC_ALL=C
のように、コマンドの最初に記述してください。
LC_ALL=C find . -type f -name '*.txt' -exec sed -i '' s/this/that/g {} +
関連
-
[解決済み】Macでポート3000をロックしているプロセスを検索(およびkill)する
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] grep --exclude/--include構文を使って特定のファイルをgrepしないようにする
-
[解決済み] 何が私のプロセスを殺したのか、なぜなのか?
-
[解決済み] OS X:Linuxのwgetに相当するもの
-
[解決済み] Macで-iオプション付きのsedコマンドは失敗するが、Linuxでは動作する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
Vmware 16仮想マシンを開けない場合、ファイルをローカルにコピーする方法は?
-
中国版「浮世」を含むUbuntu 20.04.2リリース
-
Deepin20システムのフォントを設定するには?Deepin端末のフォントサイズを設定する方法
-
Centos7 dns service named installation, encountered ** server can't find xxx.com: NXDOMAIN問題
-
[解決済み] libstdc++.so.5: 共有オブジェクトファイルを開くことができない - しかしライブラリはインストールされており最新である
-
[解決済み] IOCTL Linuxデバイスドライバ [終了しました]
-
[解決済み] エラーです。Can't open display: (null)と表示されることがあります。
-
[解決済み] Linuxでファイルをシンボリックリンクするには?[クローズド]
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?