スクリプトを介してファイルを編集しますが、osxタグは保持します。

スクリプトを介してファイルを編集しますが、osxタグは保持します。

OSXでは、タグを使用してさまざまなファイルカテゴリを識別できます。以下は、Finderで見るとラベルが異なる2つのテキストファイルです。

ここに画像の説明を入力してください。

私はこれらのファイルをたくさん持っていて、これらのファイルを何度も編集するためのbashスクリプトを書いています。たとえば、私はこうします。

$ sed 's/old text/new text/' file1.txt > /tmp/foo.txt
$ cp -p /tmp/foo.txt file1.txt

この場合、目的のファイルコンテンツを取得しましたが、タグが失われました。

ここに画像の説明を入力してください。

質問:元のファイルのタグを編集したファイルにコピーする方法は?

ベストアンサー1

を実行すると> /tmp/foo.txt上書きされます。コンテンツとの/tmp/foo.txt出力ですsed 's/old text/new text/' file1.txt/tmp/foo.txtこのコマンドを実行するとファイルが存在しないため、bashはファイルを生成してファイルに書き込みます。

-p次にフラグを使用すると、cpそのプロセスでの権限と属性をコピーして上書きします。/tmp/foo.txtfile1.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が、コンテンツを変更することです。

sed -iこの特別なケースでは、pbmの提案に従うこともできます。

おすすめ記事