HI all.
Есть задача из /var/mail/my_inbox стелать в конкретной директории кучу файлов - ровно столько сколько у меня в боксе писем.
Есть ли для этого стандарный способ ?
>HI all.
>Есть задача из /var/mail/my_inbox стелать в конкретной директории кучу файлов - ровно
>столько сколько у меня в боксе писем.
>Есть ли для этого стандарный способ ?
если ваша почта: mail
если чужая: mail -f /var/mail/my_inboxкосанда mail:
s 2 mybox1 - записать второе сообщение в файл mybox1
d 2 - удалить второе сообщение
q - выход
x - выход и восстановление удаленных сообщений
>>HI all.
>>Есть задача из /var/mail/my_inbox стелать в конкретной директории кучу файлов - ровно
>>столько сколько у меня в боксе писем.
>>Есть ли для этого стандарный способ ?
>если ваша почта: mail
>если чужая: mail -f /var/mail/my_inbox
>
>косанда mail:
>s 2 mybox1 - записать второе сообщение в файл mybox1
>d 2 - удалить второе сообщение
>q - выход
>x - выход и восстановление удаленных сообщений
Мне нужно мемного другое ...
мой маилбох содержит к примеру 50 писем.
Я хочу обработав его на выходе в директории ( к примеру) /tmp/xxx получить файлы
xxx1
xxx2
....
xxx50
Где в каждом файле содержится по одному сообщению
#!/bin/bash
declare -i I=0
while read STRING;
do
[ "`echo $STRING | egrep '^From\ '`" != "" ] && I=$I+1
echo $STRING >> /tmp/xxx$I
done < inbox
>#!/bin/bash
>declare -i I=0
>while read STRING;
>do
> [ "`echo $STRING | egrep '^From\ '`" != "" ]
>&& I=$I+1
> echo $STRING >> /tmp/xxx$I
>done < inbox
Hmm !!!!
И то верно ...
THX Большой
>THX Большой
hmm только он таб и * в недере меняет на список файлов в директории :(
>>THX Большой
>hmm только он таб и * в недере меняет на список файлов
>в директории :(Тогда возьмите имя переменной в кавычки:
echo "$STRING" >> /tmp/xxx$I
Лежало вместе с Spamassassin#!/usr/bin/perl -w
# mboxsplit - split a mailbox into separate files
#
# <@LICENSE>
# Copyright 2004 Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# </@LICENSE>my $prog = $0;
$prog =~ s@.*/@@;use vars qw($opt_h $opt_f $opt_i $opt_n);
use Getopt::Std;
getopts("hf:in:");sub usage {
my $status = shift;my $out = $status ? STDERR : STDOUT;
print $out <<EOF;
usage: $prog [options] [mbox folders]-h print this help
-f format set printf string to format
-i ignore leading data until reaching mbox separator
-n n set initial sequence number to nmboxsplit splits mbox folders into separate files. If no mbox folders
are specified, standard input is used."format" is a string formatted using the sprintf format used by Perl.
It should include a "%d" or other integer directive which will be
replaced by a sequence number (starting with 1 and counting upwards).
The default is "%d".EOF
exit($status);
}usage(0) if $opt_h;
if (! $opt_f) {
$opt_f = "%d";
}my $file_no = defined($opt_n) ? $opt_n - 1 : 0;
my $file_open = 0;while ($line = <>) {
if ($file_open == 1 && $line =~ /^From /) {
close(OUTFILE);
$file_no++;
$file_open = 0;
}
if ($file_open == 0) {
if ($file_no == 0) {
next if $opt_i && $line !~ /^From /;
$file_no++;
}
open(OUTFILE, '>' . sprintf($opt_f, $file_no));
$file_open = 1;
}
print OUTFILE $line;
}if ($file_open == 1) {
close(OUTFILE);
}