sed命令更改文件权限linux

时间:2016-05-11 13:06:14

标签: linux shell unix

我正在尝试在脚本中使用此命令替换文件中的字符串: -

sed -i "find replace" file_name

但是文件权限在此之后会发生变化。

请帮忙

3 个答案:

答案 0 :(得分:1)

权限保留在我的Fedora系统上。在任何情况下,您都可以告诉sed保留旧文件。然后,您可以将权限复制到:

sed -i.old "find replace" file_name
chmod --reference file_name.old file_name
rm file_name.old

答案 1 :(得分:0)

在某些linux版本中看起来是个问题。我搜索了几个相关的问题,但没有得到答案。搜索您的特定linux版本。

作为替代方案,您可以将内容复制到另一个临时文件,在temp_file中进行搜索和替换,然后将数据放回到file_name。

cp file_name tmp_file_name
sed "find replace" tmp_file_name> file_name  

以下是我发现的链接,显示无法解决此问题。

https://unix.stackexchange.com/questions/244603/why-is-sed-changing-permissions-of-a-file-on-a-cifs-mounted-share

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695157

答案 2 :(得分:0)

  • 使用sed -i在ubuntu 16.04(无广告)中复制
  • 权限随机更改为---x-----x

  • 解决方案:将sleep 1放在sed命令之后:)