Назад | Перейти на главную страницу

Создание тысяч файлов из оболочки

У меня тысячи каталогов, у всех такой формат;

/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