I am trying to move a group of sendmail queue files into a special
area and am developing s script to assist. The manual steps are:
# Identify which messages to move
mailq -qR<domain> > file1
# Select only lines with message ID strings
grep '^[[:alpha:]][[:alnum:]]\{13\}' file1 > file2
# extract only the messages ID
cut -b -14 file2 > file3
# prepend '*' to message IDs
sed "s/^/\*/" file3 > file4
All of this works the way that I expect. What I now want to do is
to mv all of the related files listed in file4 in the form
"*messageid" to another directory. Using xargs I expected
(naively) that the following construction would work:
cat file4 | xargs mv /var/spool/mqueue/'{}' \
/var/spool/mqueue/offline
(note that in the original this is all one line.)
However, when I do this I get the error:
mv: when moving multiple files, last argument must be a directory
Try `mv --help' for more information.
There is obviously something about xargs that I do not understand.
In my imagination I see this xargs construction expanding to this:
mv /var/spool/mqueue/*messageid1 /var/spool/mqueue/offline
mv /var/spool/mqueue/*messageid2 /var/spool/mqueue/offline
.
.
.
mv /var/spool/mqueue/*messageidn /var/spool/mqueue/offline
so that the qf and df files for each message are moved into the
subdirectory offline. But this is obviously incorrect. Can anyone
here point out to me what my misunderstanding is and how to get
this to work? If this is not the forum for this kind of question
then can someone with more experience point me to a mailing list
that would be more suitable?
Regards,
JIm
--
*** e-mail is not a secure channel ***
mailto:byrnejb.<token>@harte-lyne.ca
James B. Byrne Harte & Lyne Limited
vox: +1 905 561 1241 9 Brockley Drive
fax: +1 905 561 0757 Hamilton, Ontario
<token> = hal Canada L8E 3C3