2016-04-04 53 views
0

我剛剛使用find和sed的組合來代替目錄文件中的字符串。sed腳本 - 臨時文件上的權限被拒絕

find . -type f -exec sed -i 's,foo,bar,g' {} + 

它完成了工作。之後,我退出了服務器(通過SSH連接),然後記住,我需要再次運行該命令。所以我解僱略有修改查找/替換字符串相同的命令,但沒有工作了給以下錯誤:

sed: couldn't open temporary file ./sedPFq4Ck: Permission denied 

現在有什麼不對?

FWIW:每次新嘗試後提及的臨時文件的文件名都會改變。

回答

2

在編輯文件時,sed創建一個臨時文件,保存結果,然後最終mv原始文件與臨時文件。

問題是您在sed正嘗試創建臨時文件的目錄中沒有寫權限。

由於文件是./sedPFq4Ck,請檢查您運行find命令的目錄的權限。

+0

但爲什麼10分鐘前它工作? – beta

+0

@beta這是一個模棱兩可的問題,檢查目錄的權限,你沒有寫權限..也許在第一次,你運行它作爲不同的用戶誰有權限.. – heemayl

+0

好吧,對不起。我的管理員在兩次嘗試之間改變了權限。我不知道這一點。 – beta