#1 04.03.2015 18:14:39

vitalikmondliak
Administrator
Зарегистрирован: 04.03.2015
Сообщений: 4
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Всем привет! Помогите пожалуйста.
Итак, у нас есть файл, скажем, file.conf, в который мы записываем в один столбик слова, эти слова являются названиями файлов и могут быть произвольными. Что должен делать скрипт:
- При первом запуске создает директорию /home/files, содержащую пустые файлы с именами указанными в file.conf
- Потом мы добавляем или удаляем из file.conf одну или несколько строк и запускаем скрипт сново. При этом из /home/files должны удалится файлы, удаленные из file.conf. Или добавиться, если были добавлены записи в файл
Суть, значит, в следующем - внесли изменения в файл, запустили скрипт, увидели соответствующие изменения в директории.
Далее ставим скрипт в cron на выполнение каждых 5 минут.

Проблем с созданием файлом нет, а вот удаление есть проблемы.

for i in $(cat file.conf); do
touch /home/files/$i
done


Удаление пробую делать вот так, но знаю что это неправильно. Подскажите как сделать правильно...

for f in $(ls /home/files); do
for i in $(cat file.conf);
do
    if [ $f != $i ];
    then
rm /home/files/$f
fi
done
done

#2 05.03.2015 06:07:35

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Quote by vitalikmondliak
for f in $(ls /home/files); do

for f in /home/files/*; do

Quote by vitalikmondliak
for i in $(cat file.conf);

while read i; do
# …
done <file.conf

Quote by vitalikmondliak
if [ $f != $i ];

if [[ "$f" != "$i" ]]

#3 05.03.2015 08:40:00

vitalikmondliak
Administrator
Зарегистрирован: 04.03.2015
Сообщений: 4
IP-адрес

bash: скрипт который создаёт и удаляет файлы

for f in /home/files/*; do
while read i; do
    if [[ "$f" != "$i" ]];
    then
echo $f
fi
done <file.conf
done

#4 05.03.2015 11:34:53

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

bash: скрипт который создаёт и удаляет файлы

vitalikmondliak, ну типа того. Хотя нормальные люди для этого юзают rsync.

#5 05.03.2015 13:38:27

vitalikmondliak
Administrator
Зарегистрирован: 04.03.2015
Сообщений: 4
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Не получается так. Оно мне выводит все значения f по несколько раз, а нужно только те, которых нет в файле file.conf.
Может флаги ставить...даже не знаю. Подскажите пожалуйста что делать.

#6 05.03.2015 20:10:05

AntiduPb
Administrator
Зарегистрирован: 12.01.2014
Сообщений: 166
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Quote by vitalikmondliak
Подскажите пожалуйста что делать.

#!/bin/bash

strfile=`cat file.conf`
strfile2=`ls -1 aaadir/`
for i in $strfile         
do
    ls aaadir/$i &> /dev/null                   #Проверяем существование файла
    if (( $? == 2 ))                                   #Если не существует
    then                                                  #то
    touch aaadir/$i                                  #создаем
    fi 
done
#
for i in $strfile2                                      #Поочередно присваиваем переменной i имена файлов в директории
do
    grep "^$i$" file.conf &> /dev/null      #Grep'аем эти имена по файлу file.conf на точное совпадение
    if (( "$?" == 1 ))                                 #Если grep ничего не нашел он возвращает 1
    then                                                   #А если grep такого названия в file.conf не нашел
    rm aaadir/$i                                       #удаляем этот файл
    fi
done
exit 0

Вот, если еще нужно.
P.S. Вроде работает. Только пути свои поставьте.

#7 05.03.2015 20:48:02

vitalikmondliak
Administrator
Зарегистрирован: 04.03.2015
Сообщений: 4
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Работает. Большое спасибо.

#8 06.03.2015 07:37:31

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Quote by AntiduPb
ls aaadir/$i &> /dev/null #Проверяем существование файла

man test

#9 06.03.2015 07:40:11

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Проверка существования файла http://www.bash-scripting.ru/abs/chunks/ch07s02.html
Самый первый параметр.

#10 06.03.2015 09:51:36

AntiduPb
Administrator
Зарегистрирован: 12.01.2014
Сообщений: 166
IP-адрес

bash: скрипт который создаёт и удаляет файлы

Quote by drBatty
man test

Quote by Vascom
Проверка существования файла http://www.bash-scripting.ru/abs/chunks/ch07s02.html
Самый первый параметр.

ok. Спасибо. Буду знать :) Просто на тот момент набыдлокодил как умел :[
P.S. Про test знал, но до мана как-то не доходил. Прочту.

Board footer