У меня тысячи каталогов, все они имеют этот формат;
/var/www/vhosts/[USERNAME].company.com/conf/
и у меня есть файл под названием x.txt, его содержимое должно иметь
[USERNAME] and some static text...
Итак, когда я делаю dir /var/www/vhosts/*/conf/, я получаю все каталоги, в которые мне нужно скопировать файл, однако я не знаю, как взять [USERNAME] и поместить его в тот файл, который мне нужно скопировать.
Приветствуются все предложения. В этой среде я могу использовать только скрипты оболочки.
Спасибо,
решение1
cd /var/www/vhosts && for d in */; do пользователь=${d%%.*} echo "$user бла-бла" > "${d}/conf/x.txt" сделанный
... должно дать вам практически то, что вы хотите.
решение2
Деннис и Майк, убедитесь, что вы цитируете ${dir}. Если есть какие-либо каталоги с пробелами, это может привести к некоторым проблемам.
echo "$user and some static text..." > "${dir}/conf/x.txt"
Ради переносимости я бы использовал "${d%%.*}" для поиска имени пользователя.
решение3
Вот еще один способ сделать это:
cd /var/www/vhosts &&
find -maxdepth 1 -mindepth 1 -type d -print0 |
while read -d '' -r dir
do
user=$(basename "$dir" .company.com)
echo "$user and some static text..." > "${dir}/conf/x.txt"
done