用一行在许多路径中附加特定文件

Append specific file in many paths with a line

出于某些原因,我已将 php.ini 文件复制到我用户的所有主目录中 示例:

/home/user1/php.ini
/home/user2/php.ini
/home/user3/php.ini

任何用户的主文件夹的 chown 与用户相同: 示例:

/home/user1/   is owned by user1 and group is set to user1

我想将所有 php.ini 文件附加到特定行,例如:

open_basedir=/home/xxxxx:/usr/local/etc/php5/cgi:/tmp

而不是 xxxxxx,我想要 php.ini 当前所在的相关文件夹的所有者。

如何实现自动化?

我作为 root 会做什么:

cd /home
for user in */; do
    test -s /home/${user}php.ini || continue
    chown ${user%/}: /home/${user}php.ini
    echo "open_basedir=/home/${user%/}:/usr/local/etc/php5/cgi:/tmp" >> /home/${user}php.ini
done

您可以使用这个 find 命令:

cd /home
find . -name 'php.ini' -exec bash -c 'd="${1%/*}"; d="${d#*/}"; echo "open_basedir=/home/$d:/usr/local/etc/php5/cgi:/tmp" >> ""' - '{}' \;