@popopa

Как сделать массив для пути команды find?

Приветствую!

Есть следующий код, который что-то делает с найденными изображениями.

DIR="/var/www/subdomain.example.com/upload/" 
STORAGE="gs://images.example.com/" #storage on google cloud
LIST="logs/urls.txt"


######################################################################
######################################################################
######################################################################
######################################################################
DIR_FROM_EXECUTED="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"

if [[ ! -d "$DIR_FROM_EXECUTED/logs/" ]];    then
        mkdir -p "$DIR_FROM_EXECUTED/logs/"
fi


> "$DIR_FROM_EXECUTED/logs/urls.txt"
> "$DIR_FROM_EXECUTED/logs/lastlog.txt"



find "$DIR" -regextype posix-extended -iregex ".*\.(png|jpg|gif|jpeg|ico|svg)" -not -path "${DIR}tmp/*" -print > "$LIST" 



 while read URL
do
    URLTOUPLOAD=$(echo $STORAGE$URL | sed "s@${DIR}@@g")
        gsutil -m cp "$URL" "$URLTOUPLOAD"  > /dev/null 2>&1    
        echo  "$URL" "=>"  "$URLTOUPLOAD" | sed "s@gs:@https:@g" | tee -a "$DIR_FROM_EXECUTED/logs/lastlog.txt"
        gsutil -m acl ch -u AllUsers:R "$URLTOUPLOAD" > /dev/null 2>&1
        gsutil -m setmeta -h "Cache-Control:public, max-age=31536000" "$URLTOUPLOAD" > /dev/null 2>&1
        rm -f "$URL" > /dev/null 2>&1
done < $LIST


Но нужно что бы переменная DIR была не один статистический путь, а для следующей команды, то есть для всех найденных server_names.

grep -rl "server_name " /etc/nginx/conf.d/ | sed '/default/d' | sed '/sclool.tools/d' | sed '/images.interatletika/d' | sed 's/.conf//g' | sed 's/\/etc\/nginx.d\//\/var\/www\//g

Как это лучше сделать, снова через for do done?

Или? Можно примеры ?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
shambler81
@shambler81 Куратор тега Linux
for i in `mysql -uroot -pPass -e'show databases;' | grep -v information_schema | grep -v Database`; do mysqldump -uroot -pDungeonKeeper $i > /var/backup/mysql/last/$i.sql;done >> /dev/null 2>> /var/log/sqlbackup.log
tar -czvf /var/backup/mysql/`date +%Y`/sqldump-`date +%Y-%m-%u`.tar.gz ./last >> /dev/null > /var/log/sqlbackup.log

цикл и переменная подставляется куда угодно.
В данном случае мы смотрим названия баз данных и в цикле их архивируем.
доработать уже сможешь
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Можно так попробовать, только $LIST Нужно обнулять.

grep -rl "server_name " /etc/nginx/conf.d/ | sed '/default/d' | sed '/sclool.tools/d' | sed '/images.interatletika/d' | \ sed 's/.conf//g' | sed 's/\/etc\/nginx.d\//\/var\/www\//g | \
xargs find {} -regextype posix-extended -iregex ".*\.(png|jpg|gif|jpeg|ico|svg)" -not -path "${DIR}tmp/*" -print >> "$LIST" \;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы