1. Есть директория с текстовым файлом, где каждая строчка с новой строки
2. Есть директория с файлами.
3. Нужно строки применить к файлам, по типу «chgrp строка1 файл1, chgrp строка2 файл2»
Пробывал следующий цикл, но работает максимально криво, результат - строки не соответствуют нужным файлам. Есть другие идеи ? Либо есть какие-то ошибки ?
#!/bin/sh
cd /home/man/httpd-logs # перехожу в директорию с файлами
datax="/home/man/data.txt" #строки
target=$(ls -ll | awk '{print $9}' | grep 'access.log') #команда выводит нужные мне файлы в директори, не обращайте на неё внимания. считайте, что это просто вывод файлов в директории.
for i in $target
do
read line
chgrp $line $i
done < $datax
пункт 1.
Есть текстовый файл, содержащий разные строки, где каждая начинается с новой строки.
пункт 2.
Есть директория, содержащая файлы, где основная часть названия - повторяется парами, по двое; а конец названия как в примере ниже, то есть повторы идут через раз.
Пример:
hello.com.ua.access.list
hello.com.ua.error.log
donald.ru.access.list
donald.ru.error.log
...
и т.д
Цель: применить комманду смены группы к каждому файлу из директории (пункт 2), но само название для смены группы берётся из текстового файла с самого начала (пункт 1), и только одно название должно быть для одной пары файлов, потом следующие название для следующей пары и т.д.
Пример:
chgrp lala hello.com.ua.access.list
chgrp lala hello.com.ua.error.log
chgrp gaga donald.ru.access.list
chgrp gaga donald.ru.error.log
...
и т.д
Вопрос:
я так понимаю, что это можно сделать двумя циклами через итерацию, но как это правильно реализовать ? Есть какие-то догадки ?
Моя версия такова, но она не работает:
for i in $директория
do
while read line
do
chgrp $line $i
done < $текстовыйфайл
done
exit 0