ディレクトリは何千個もあり、そのすべてがこの形式になっています。
/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 */; 実行 ユーザー=${d%%.*} echo "$user blah blah" > "${d}/conf/x.txt" 終わり
...ほぼあなたが望むものが得られるはずです。
答え2
Dennis と Mike は、${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