LINUX.ORG.RU

Не работает простой скрипт на Ubuntu 15.10

 ,


0

2

Суть скрипта — показать новые файлы в каталоге

#!/bin/bash
mkdir /tmp/backup/
echo "Not working:"
rm  /var/log/newfile.txt
find /var/log/ -type f >/tmp/backup/filelistbefore.txt
touch  /var/log/newfile.txt
find /var/log/ -type f >/tmp/backup/filelistafter.txt
grep -vf /tmp/backup/filelistbefore.txt /tmp/backup/filelistafter.txt >/tmp/backup/newfiles.txt
echo "New files with cat:"
cat /tmp/backup/newfiles.txt
echo "Diff:"
diff /tmp/backup/filelistbefore.txt /tmp/backup/filelistafter.txt
 
echo "Working:"
rm  $HOME/testcatalog/newfile.txt
find $HOME/testcatalog/ -type f >/tmp/backup/filelistbefore.txt
touch  $HOME/testcatalog/newfile.txt
find $HOME/testcatalog/ -type f >/tmp/backup/filelistafter.txt
grep -vf /tmp/backup/filelistbefore.txt /tmp/backup/filelistafter.txt >/tmp/backup/newfiles.txt
echo "New files with cat:"
cat /tmp/backup/newfiles.txt
echo "Diff:"
diff /tmp/backup/filelistbefore.txt /tmp/backup/filelistafter.txt

На Ubuntu 15.10 не работает, на CentOS 6 всё нормально. В чём может быть причина?

Запускаю от sudo, ошибок на выхлопе нет.

В первом случае с помощью grep не находит разницу, но с diff разница есть.

Ошибка возникает тут:

grep -vf /tmp/backup/filelistbefore.txt /tmp/backup/filelistafter.txt >/tmp/backup/newfiles.txt
echo "New files with cat:"
cat /tmp/backup/newfiles.txt

Скрин: http://i.imgur.com/b5SrA2V.png

★★★

Последнее исправление: beastie (всего исправлений: 1)

Не знаю, в чём причина, но если у вас grep исплользуется как аналог diff, то ему явно нужно указывать опцию ″-F″, чтобы он не рассматривал строки как регулярные выражения.

mky ★★★★★
()
Ответ на: комментарий от iljuase

Я не обещал, что ″-F″ поможет. Попробуйте локализовать проблему.

Сделате, чтобы ″/tmp/backup/filelistafter.txt″ была только одна строку:″/var/log/newfile.txt″.
Если ″grep -F -vf /tmp/backup/filelistbefore.txt /tmp/backup/filelistafter.txt″ так и будет давать пустой вывод,
то пишите скрипт, который разобъёт ″filelistbefore.txt″ на отдльные строки и для каждой запусит ″grep -v″...

mky ★★★★★
()
Ответ на: комментарий от Kronick

$ diff -u file1 file2|egrep «^\+\w»|sed -E ``/./s///``
test4
$ cat file1
test1
test2
test3
$ cat file2
test1
test2
test3
test4
$ diff -u file1 file2|egrep «^\+\w»|sed -E ``/./s///``
test4
$

Kronick
()

показать новые файлы в каталоге

incron

zolden ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.