Shell-Script
通過腳本編輯文件但維護 osx 標籤
在 OSX 上,您可以使用標籤來辨識不同類別的文件。以下是在 Finder 中查看時具有不同標籤的兩個文本文件:
我有大量這些文件,並編寫了一個 bash 腳本來對這些文件進行多次編輯。所以,例如我這樣做:
$ sed 's/old text/new text/' file1.txt > /tmp/foo.txt $ cp -p /tmp/foo.txt file1.txt
在這種情況下,我得到了所需的文件內容但失去了標籤:
問題:如何將標籤從原始文件複製到編輯後的文件中?
執行時
> /tmp/foo.txt
,您將使用的輸出覆蓋 的內容。由於在您執行此命令時不存在,因此 bash 將為您創建該文件,然後將其寫入。/tmp/foo.txt``sed 's/old text/new text/' file1.txt``/tmp/foo.txt
然後,當您使用
-p
標誌 to 時cp
,您正在複製 to 的權限和屬性/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
to複製任何權限或屬性,/tmp/foo.txt
反之亦然 - 您正在維護 的現有元數據file1.txt
,但正在修改內容。在這種特定情況下,您也可以
sed -i
按照 pbm 的建議使用。