当我运行 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”。
这不起作用,因为您使用的是单引号而不是双引号:
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"