The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как выдать файлы в обратном порядке ?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как выдать файлы в обратном порядке ?"  
Сообщение от XPurple (ok) on 30-Мрт-06, 14:55 
Когда делаю cat logfile.log*|mail my, то файлы читаются в таком порядке logfile.log logfile.log.1 и т.д.
Соответсвенно, вначале выводятся записи за 30 число, потом за 29 и т.д.,что выглядит некрасиво.
Можно ли сделать так (с помощью регулярного выражения), чтобы файлы читались в обратном (неалфавитном) порядке, а в порядке создания: logfile.log.2 logfile.log.1 logfile.log?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Как выдать файлы в обратном порядке ?"  
Сообщение от skyogre on 30-Мрт-06, 17:17 
>Когда делаю cat logfile.log*|mail my, то файлы читаются в таком порядке logfile.log
>logfile.log.1 и т.д.
>Соответсвенно, вначале выводятся записи за 30 число, потом за 29 и т.д.,что
>выглядит некрасиво.
>Можно ли сделать так (с помощью регулярного выражения), чтобы файлы читались в
>обратном (неалфавитном) порядке, а в порядке создания: logfile.log.2 logfile.log.1 logfile.log?

cat `ls -ltr | awk '{if($9 ne "") print $9}'` | mail user@example.com

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Как выдать файлы в обратном порядке ?"  
Сообщение от BigShadow email on 31-Мрт-06, 16:10 
а если так:

cat `ls -tr logfile.log.*` | mail user@example.com

?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Как выдать файлы в обратном порядке ?"  
Сообщение от allez (ok) on 30-Мрт-06, 17:42 
>Когда делаю cat logfile.log*|mail my, то файлы читаются в таком порядке logfile.log
>logfile.log.1 и т.д.
>Соответсвенно, вначале выводятся записи за 30 число, потом за 29 и т.д.,что
>выглядит некрасиво.
>Можно ли сделать так (с помощью регулярного выражения), чтобы файлы читались в
>обратном (неалфавитном) порядке, а в порядке создания: logfile.log.2 logfile.log.1 logfile.log?


for i in `ls logfile.log* | sort -nr`; do cat $i | mail my; done

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Как выдать файлы в обратном порядке ?"  
Сообщение от XPurple (ok) on 31-Мрт-06, 06:10 
>for i in `ls logfile.log* | sort -nr`; do cat $i |
>mail my; done
Странно, но этот вариант не прошел.
А то, что предложил skyogre - прошел.
Спасибо -за помощь.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Как выдать файлы в обратном порядке ?"  
Сообщение от allez (ok) on 31-Мрт-06, 06:37 
>>for i in `ls logfile.log* | sort -nr`; do cat $i |
>>mail my; done
>Странно, но этот вариант не прошел.
>А то, что предложил skyogre - прошел.
>Спасибо -за помощь.

Действительно странно. Нельзя ли увидеть сообщения о возникших ошибках?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Как выдать файлы в обратном порядке ?"  
Сообщение от BigShadow email on 31-Мрт-06, 16:16 
>>>for i in `ls logfile.log* | sort -nr`; do cat $i |
>>>mail my; done
>>Странно, но этот вариант не прошел.
>>А то, что предложил skyogre - прошел.
>>Спасибо -за помощь.
>
>Действительно странно. Нельзя ли увидеть сообщения о возникших ошибках?

Что вижу я.
Во-первых вместо одно письма получаем по письму на файл. Т.е. изначальная задача не выполняется :(
Во-вторых сортировка хоть и задается числовая, но выполняется она для строковых значений. И опять требуемый порядок следования файлов мы не получаем. Исправить можно заданием точки как раздилителя полей и реверсной числовой сортировкой по третьему полю. Но нужно ли? (см. первое замечание)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Как выдать файлы в обратном порядке ?"  
Сообщение от allez (ok) on 01-Апр-06, 17:13 
>Что вижу я.
>Во-первых вместо одно письма получаем по письму на файл. Т.е. изначальная задача
>не выполняется :(
Согласен. Виной тому - моя невнимательность. Необходимо объединить обрабатываемые в один
и уже его отправить по почте:
$ for i in `ls logfile.log* | sort -nr`; do cat $i >> log_for_mail; done; cat log_for_mail | mail my

>Во-вторых сортировка хоть и задается числовая, но выполняется она для строковых значений.
>И опять требуемый порядок следования файлов мы не получаем. Исправить можно
>заданием точки как раздилителя полей и реверсной числовой сортировкой по третьему
>полю. Но нужно ли? (см. первое замечание)
А вот тут позволю себе не согласиться. Указание опции -n заставляет команду sort
игнорировать в сортируемых строках "неподходящие" символы (то есть отличные от цифр,
разделителей целой и дробной частей и указателей знака числа). Вот тому пример:

$ touch file
$ touch file.1
$ touch file.2
$ touch file.3
$ ls file* | sort -nr
file.3
file.2
file.1
file

Для пущей наглядности можно несколько изменить условия задачи:

$ touch f1ile
$ touch fi2le
$ touch fil3e
$ ls f* | sort -nr
fil3e
fi2le
f1ile

Правда, должен оговориться, что я использовал GNU-версию sort (SuSE Linux 9.2 и 10.0, а
также FreeBSD 4.9); возможно, данная возможность существует только в ней...

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру