使用一行在多个路径中追加特定文件

时间:2015-01-03 16:41:30

标签: bash scripting

由于某些原因,我已将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当前所在的相关文件夹的所有者。

如何自动化?

2 个答案:

答案 0 :(得分:0)

我将以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

答案 1 :(得分:0)

您可以使用此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" >> "$1"' - '{}' \;