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