2016-06-29 6 views
0

У меня есть файлы журналов, как показано ниже, и мне нужно ежедневно запускать скрипт, который будет их перечислять, а затем сделать 2 вещи.Как получить предыдущие файлы даты и передать ls вывод в массив в gawk

1- получить предыдущий/вчера файлы и передавать их на сервер х 2- получить файлы старше одного дня и перенести их на сервер у

Файлы, как показано ниже, и я пытаюсь ниже код, но не работает.

как мы можем пройти ls -altr выход до gawk? мы можем построить подобный массив, как показано ниже.

array[index]=ls -altr | awk '{print $6,$7,$8}' 

код, который я пытаюсь восстановить предыдущие файлы даты, но не работает

previous_dates=$(date -d "-1 days" '+-%d') 


ls -altr |gawk '{if ($7!=previous_dates) print $9 }' 

-r-------- 1 root root 6291563 Jun 22 14:45 audit.log.4 
-r-------- 1 root root 6291619 Jun 24 09:11 audit.log.3 
drwxr-xr-x. 14 root root 4096 Jun 26 03:47 .. 
-r-------- 1 root root 6291462 Jun 26 04:15 audit.log.2 
-r-------- 1 root root 6291513 Jun 27 23:05 audit.log.1 
drwxr-x---. 2 root root 4096 Jun 27 23:05 . 
-rw------- 1 root root 5843020 Jun 29 14:57 audit.log 
+0

Было бы лучше использовать что-то вроде 'стат -c«% п% г» ', а не команду ls, которая производит много продукции вы не заинтересованы в –

ответ

0

Чтобы выбрать файлы, измененные вчера, вы могли бы использовать

find . -daystart -type f -mtime 1 

и выбирать старые файлы, вам мог бы использовать

find . -daystart -type f -mtime +1 

, возможно, добавив тест -name, чтобы выбрать, например, только такие файлы, как audit.log*. Затем вы можете использовать xargs для обработки файлов, например.

find . -daystart -type f -mtime 1 | xargs -n 1 -I{} scp {} [email protected] 
+0

вопрос с«найти. - mtime 1 "заключается в том, что если скрипт запускается в 8:00 утра на следующий день, он также будет включать файлы, измененные между 00:00 hr. до 08:00 в тот же день - где я просматриваю файлы, которые были изменены между 00:00 и 23:59 предыдущего дня. –

+0

@MohdFaisal. Именно поэтому я использовал '-daystart'. –