OSXでは、さまざまなカテゴリのファイルを識別できるタグを付けることができます。 Finderで表示したときにタグが異なる2つのテキストファイルを次に示します。
私はこれらのファイルを多数持っており、これらのファイルをいくつか編集するためのbashスクリプトを作成しました。だから、例えば私はします:
$ sed 's/old text/new text/' file1.txt > /tmp/foo.txt
$ cp -p /tmp/foo.txt file1.txt
その場合、目的のファイルコンテンツを取得しますが、タグを失います。
質問:タグを元のファイルから編集したファイルにコピーするにはどうすればよいですか?
> /tmp/foo.txt
を実行すると、/tmp/foo.txt
の-contentsがsed 's/old text/new text/' file1.txt
の出力で上書きされます。このコマンドを実行すると/tmp/foo.txt
が存在しないため、bashはそのファイルを作成してから書き込みます。
次に、-p
フラグをcp
に使用すると、/tmp/foo.txt
の権限と属性がfile1.txt
にコピーされ、その過程で上書きされます。
代わりに、file1.txt
の内容を/tmp/foo.txt
の内容で上書きします。これはおなじみのように聞こえます。実行
sed 's/old text/new text/' file1.txt > /tmp/foo.txt
cat /tmp/foo.txt > file1.txt
これは、権限または属性をfile1.txt
から/tmp/foo.txt
に、またはその逆にコピーしないことに注意してください。file1.txt
の既存のメタデータを維持しますが、コンテンツを変更します。
この特定の例では、pbmが提案したようにsed -i
を使用することもできます。