쉘에서 수천 개의 파일 생성

쉘에서 수천 개의 파일 생성

나는 수천 개의 디렉토리를 가지고 있는데, 모두 이 형식을 가지고 있습니다.

/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 어쩌고 저쩌고" > "${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

관련 정보