15

特定の情報を構成ファイルに書き込む、イライラするクローズド ソース ツールを入手しました。その後、別のファイルで構成を使用しようとすると、古いファイルが読み込まれます。うーん...

幸いなことに、構成ファイルはテキストなので、バージョン管理できます。問題のある行をファイルから削除するだけで、害はないことがわかります。

しかし、ツールは行を元に戻し続けます。そのため、構成ファイルの新しいバージョンをチェックインするたびに、シンボルを含むすべての行を削除する必要がありますopenDirFile.

各ファイルで grep -v を実行し、結果を一時ファイルに保存し、元のファイルを削除して一時ファイルの名前を変更するためのある種の bash コマンドを作成しようとしていますが、誰かがきれいな解決策を知っているかどうか疑問に思いました。または、すでに同様の呼び出しを作成してデバッグしていました。

追加のクレジットとして、同じディレクトリ (favourite.rc->signals.rc) 内のシンボリック リンクを破棄せずにこれを行うにはどうすればよいでしょうか?

4

2 に答える 2

20
sed -i '/openDirFile/d' *.conf

これにより、すべてのconfファイルが削除されます

conf ファイルが異なるパスにある場合は、この行を「find」コマンドと組み合わせることもできます。

-i は「その場で」削除を行うことに注意してください。

于 2012-04-18T09:17:41.480 に答える
0

これは私が思いついたbash-spellでした:

for i in *.rc ; do TMP=$(mktemp) ; grep -v openDirFile ${i} >${TMP} ; mv ${TMP} ${i} ; done

ケントの答えは明らかに優れています。

于 2012-04-18T09:32:52.683 に答える