sed 命令没有替换我目录中的文件

问题描述 投票:0回答:1

当我运行 bash 脚本(如下所示)时,文件不会更改。 由于某种原因,更换没有发生。 我以 sudo 身份运行命令,html 文件夹的权限为 775,所有者是我的用户。

#!/bin/bash

# Get the directory to search from the user
#read -p 'Enter the directory to search: ' directory
directory='/var/www/html/'

# Get the text to search for
search_text='Gavin'

# Get the replacement text
replace_text='dingus'

find "$directory" -type f -exec sed -i 's/$search_text/$replace_text/g' {} \;

# Print confirmation message
echo "Replaced '$search_text' with '$replace_text' in all files within '$directory'"

我尝试以 sudo 和我的用户身份运行该命令。

我希望该文件能够在

/var/www/html
目录中的所有文件中全局更改任何出现的“Gavin”和“dingus”。

shell sed sh
1个回答
0
投票

这不起作用,因为您使用的是单引号而不是双引号:

find "$directory" -type f -exec sed -i 's/$search_text/$replace_text/g' {} \;

这将搜索

$search_text
,而不是
Gavin

这应该有效:

find "$directory" -type f -exec sed -i "s/$search_text/$replace_text/g" {} \;

或者

find "$directory" -type f -print0|xargs -r0 sed -i "s/$search_text/$replace_text/g"
© www.soinside.com 2019 - 2024. All rights reserved.