У меня тысячи каталогов, у всех такой формат;
/var/www/vhosts/[USERNAME].company.com/conf/
и у меня есть файл с именем x.txt, его содержимое должно иметь
[USERNAME] and some static text...
поэтому, когда я делаю dir / var / www / vhosts / * / conf /, я получаю все каталоги, в которые мне нужно скопировать файл, однако я не знаю, как получить этот [USERNAME] и поместить его в тот файл, который мне нужно скопировать.
Все предложения приветствуются. Я могу использовать только сценарии оболочки в этой среде.
Спасибо,
cd /var/www/vhosts && for d in */; do user=${d%%.*} echo "$user blah blah" > "${d}/conf/x.txt" done
... должен дать вам почти то, что вы хотите.
Деннис и Майк убедитесь, что вы цитируете $ {dir}. Если есть какие-либо каталоги с пробелами, это может привести к некоторым проблемам.
echo "$user and some static text..." > "${dir}/conf/x.txt"
Ради переносимости я бы использовал "$ {d %%. *}" Для поиска имени пользователя.
Вот еще один способ сделать это:
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