Erstellen von Tausenden von Dateien aus der Shell

Erstellen von Tausenden von Dateien aus der Shell

Ich habe Tausende von Verzeichnissen, alle haben dieses Format;

/var/www/vhosts/[USERNAME].company.com/conf/

und ich habe eine Datei namens x.txt, ihr Inhalt sollte lauten

[USERNAME] and some static text...

wenn ich also „dir /var/www/vhosts/*/conf/“ eingebe, erhalte ich alle Verzeichnisse, in die ich die Datei kopieren muss, ich weiß jedoch nicht, wie ich diesen [BENUTZERNAME] greife und in die Datei einfüge, die ich kopieren muss.

Alle Vorschläge sind willkommen. Ich kann in dieser Umgebung nur Shell-Skripte verwenden.

Danke,

Antwort1

cd /var/www/vhosts && für d in */; machen
   Benutzer=${d%%.*}
   echo "$user bla bla" > "${d}/conf/x.txt"
Erledigt

... sollte Ihnen so ziemlich alles bringen, was Sie wollen.

Antwort2

Dennis und Mike stellen sicher, dass Sie ${dir} in Anführungszeichen setzen. Wenn Verzeichnisse mit Leerzeichen vorhanden sind, kann dies zu Problemen führen.

echo "$user and some static text..." > "${dir}/conf/x.txt"

Aus Gründen der Portabilität würde ich „${d%%.*}“ verwenden, um den Benutzernamen zu finden.

Antwort3

So kann man es auch machen:

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

verwandte Informationen