シェルから数千のファイルを作成する

シェルから数千のファイルを作成する

ディレクトリは何千個もあり、そのすべてがこの形式になっています。

/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

関連情報